Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: minette1988 en 15 Junio 2010, 13:59 PM

Título: leer cadenas de un fichero binario y mostrarlas por pantalla
Publicado por: minette1988 en 15 Junio 2010, 13:59 PM
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.
Título: Re: leer cadenas de un fichero binario y mostrarlas por pantalla
Publicado por: Eternal Idol en 15 Junio 2010, 14:46 PM
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.