leer cadenas de un fichero binario y mostrarlas por pantalla

Iniciado por minette1988, 15 Junio 2010, 13:59 PM

0 Miembros y 1 Visitante están viendo este tema.

minette1988

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.

Eternal Idol

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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón