Foro de elhacker.net

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:

Código
  1. #include <stdio.h> //escribe una cadena en un fichero y después lo lee y escribe en pantalla
  2. #include <string.h>
  3.  
  4. struct registro{
  5.   char nombre[50];
  6. };
  7.  
  8.  
  9. int   main ()
  10.   {
  11.      FILE *fich;
  12.      char nom_fich[50];
  13.      char op;
  14.  
  15.      struct registro datos;
  16.  
  17.      printf("Introduzca nombre del fichero: ");
  18.      scanf("%49s",nom_fich);
  19.      /* Escritura del float en el fichero */
  20.      if ((fich = fopen (nom_fich, "wb")) == NULL)
  21.         {
  22.         printf ("Error de creación del fichero\n");
  23.  
  24.         }
  25.       else{
  26.          do{
  27.           printf("Introduce una cadena: ");
  28.           scanf("%49s",datos.nombre);
  29.           fwrite (&datos, sizeof (datos), 1, fich);
  30.           printf("¿Otro? (s/n)");
  31.           scanf("%1s",&op);
  32.          }while((op == 's') || (op == 'S'));
  33.       }
  34.       fclose (fich);
  35.  
  36.       /* Lectura del float del fichero */
  37.      if ((fich = fopen (nom_fich, "rb")) == NULL)
  38.         {
  39.         printf ("Error de existencia del fichero\n");
  40.  
  41.         }
  42.      else{
  43.          fread (&datos, sizeof(datos), 1, fich);
  44.          while(!feof)
  45.             fread (&datos, sizeof(datos), 1, fich);
  46.      }
  47.      fclose (fich);
  48.  
  49.      printf ("%s\n", datos.nombre);
  50.   }
  51.  

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.