Ver Mensaje Individual
  #16 (permalink)  
Antiguo 15/07/2010, 21:00
sam90
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Ayuda con esto..

Bien, tu problema esta en que en el archivo se genera caracteres basura.


Tu problema reside en que estas guardando la estructura completa. Fijate por ejemplo struct cliente tiene un campo llamado nombre de tamaño 30.

Supongamos ahora que ingreso el nombre del cliente que tiene un tamaño de 10 caracteres. Por cosecuencia existe los restantes 20 caracteres que se almacenan valores basuras, y al momento de guardarlos tambien son escritos.

Una modificacion seria al momento de guardar, ir variable por variable.

Código C++:
Ver original
  1. void guardar (void)
  2. {
  3.  
  4. FILE *almacena ;
  5. char inbuf [20];
  6.  
  7. system("cls");
  8. printf("\nAlmacenar con nombre.dat: ");
  9.  
  10. while (kbhit());
  11. gets (inbuf);
  12. if ((almacena= fopen (inbuf, "wb"))==NULL)
  13. {
  14. perror ("\n NO puedo abrir el fichero de datos... ");
  15. return;
  16. }
  17. indice=primero;
  18.  
  19.  
  20. do
  21. {
  22. //fwrite(indice, sizeof(struct cliente),1,almacena);
  23. fprintf(almacena,"%s\n",indice->nombre);
  24. fprintf(almacena,"%s\n",indice->apellido);
  25.  
  26. indice= indice ->sigte;
  27. }while (indice != (struct cliente *)NULL);
  28.  
  29. fclose (almacena);
  30.  
  31. }