Hola, el siguiente programa escribe cadenas en un fichero binario, luego las lee del fichero y finalmente las muestra por pantalla:
#include <stdio.h> //escribe una cadena en un fichero y después lo lee y escribe en pantalla
#include <string.h>
struct registro{
char nombre[50];
};
int main ()
{
FILE *fich;
char nom_fich[50];
char op;
struct registro datos;
printf("Introduzca nombre del fichero: ");
scanf("%49s",nom_fich);
/* Escritura del float en el fichero */
if ((fich = fopen (nom_fich, "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);
printf("¿Otro? (s/n)");
scanf("%1s",&op);
}while((op == 's') || (op == 'S'));
}
fclose (fich);
/* Lectura del float del fichero */
if ((fich = fopen (nom_fich, "rb")) == NULL)
{
printf ("Error de existencia del fichero\n");
}
else{
fread (&datos, sizeof(datos), 1, fich);
while(!feof)
fread (&datos, sizeof(datos), 1, fich);
}
fclose (fich);
printf ("%s\n", datos.nombre);
}
Cuando lo compilo sólo me imprime la primera cadena, ¿por qué? Por favor, contestadme pronto esta tarde tengo examen de recuperación. Gracias.
El error se ve muy rapidamente si no hace un minimo esfuerzo, estas llamando a una funcion sin pasarle ningun parametro. Si depuras el programa vas a ver lo que hace y que tengas examenes no es relevante, al contrario, nos indica que pedis ayuda con tus tareas y por lo tanto cierro el hilo.
Depuralo atentamente y veras el error, es mas el VC++ da un warning al respecto.