He hecho la siguiente modificación:
Código C:
Ver original#include <stdio.h>
#include <string.h>
struct registro{
char nombre[50];
};
int main ()
{
FILE *fich;
char op;
int i;
int num_registros=0;
struct registro datos;
struct registro *ptr_reg;
/* Escritura del float en el fichero */
if ((fich
= fopen ("cadenas.dat", "wb")) == NULL
) {
printf ("Error de creación del fichero\n");
}
else{
do{
printf("Introduce una cadena: "); scanf("%49s",datos.
nombre); fwrite (&datos
, sizeof (datos
), 1, fich
); }while((op == 's') || (op == 'S'));
}
/* Lectura del float del fichero */
if ((fich
= fopen ("cadenas.dat", "rb")) == NULL
) {
printf ("Error de existencia del fichero\n");
}
else{
fseek(fich
, 0, SEEK_END
); // Colocar el cursor al final del fichero num_registros
= ftell(fich
)/sizeof (struct registro
); // Tamaño en bytes ptr_reg
= (struct registro
*)malloc(sizeof(struct registro
)*num_registros
); fread(ptr_reg
, sizeof(struct registro
), num_registros
, fich
); }
for(i = 0; i < num_registros; i++)
printf("%s\n", ptr_reg
[i
].
nombre); }
Cuando lo compilo me da este error: En la función ‘main’:
float.c:46: aviso: declaración implícita incompatible de la función interna ‘malloc’