Ver Mensaje Individual
  #7 (permalink)  
Antiguo 19/06/2009, 15:45
xdunkelheitx
 
Fecha de Ingreso: enero-2009
Mensajes: 53
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Problemas con apuntadores y archivos

muchas gracias por seguirme ayudando puse la funcion fseek e investigue sobre lo de fread y fwrite y logre que funcionara relativamente, es decir puedo ingresar un dato con la opcion 1 y luego verlo con la opcion 2 normalmente pero cuando cierro el programa y vuelvo a abrirlo y quiero verlo defrente con la opcion 2 me sale en blanco pero si abro el programa nuevamente y pongo la opcion 1 y luego opcion 2 se visualiza lo guardado anteriormente y lo nuevo. que error puede tener que no se visualize defrente el fichero

Código programa:
Ver original
  1. #include <iostream.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <conio.c>
  5.  
  6.  
  7.  
  8. using std::iostream;
  9. using std::cout;
  10. using std::cin;
  11. using std::endl;
  12.  
  13.  
  14. struct fecha
  15. {
  16.    int dd;
  17.    int mm;
  18.    int aaaa;
  19. };
  20.  
  21. struct direccion
  22. {
  23.    char dir[50];
  24.    char disto[50];
  25.    char dpto[50];
  26.    char pais[50];
  27. };
  28.  
  29. struct persona
  30. {
  31.    char cod[8];
  32.    char ap[20];
  33.    char am[20];
  34.    char nom[50];
  35.    int sex;
  36.    fecha fnac;
  37.    direccion dir;
  38. };
  39. //declaracion de funciones
  40. //************************
  41. int menu();
  42. void lecturapers(persona **p,int *dim);
  43. void mostrarpers(persona *p,int dim);
  44. unsigned short seekEnd(const FILE* F);
  45.  
  46. //Principal
  47. //*********
  48. int main()
  49. {   persona *a;
  50.     int opcion,n;
  51.     textbackground(15);
  52.     textcolor(0);
  53.     do{
  54.       system("cls");
  55.       opcion=menu();
  56.      
  57.       switch(opcion)
  58.             {
  59.              case 0: exit(1);
  60.              case 1: system("cls");
  61.                      lecturapers(&a,&n);
  62.                      break;
  63.              case 2: system("cls");
  64.                      mostrarpers(a,n);
  65.                      break;
  66.             }
  67.     }while(opcion);
  68.        
  69.        
  70.        
  71.        
  72.  
  73.       system("PAUSE");
  74.       return 0;
  75. }
  76.  
  77. //Menu de Opciones
  78. //****************
  79. int menu()
  80. {   int op;
  81.    
  82.     cout<<"\n \t\t\t   DIRECTORIO TELEFONICO\n";
  83.     cout<<"\t\t\t    ---------------------\n\n\n";
  84.     cout<<"\t\t\t   [1]Ingresar Datos\n";
  85.     cout<<"\t\t\t   [2]Mostrar Personas\n";
  86.     cout<<"\t\t\t   [0]Salir del directorio\n\n";
  87.     do{
  88.        cout<<"\n\t\t\t   Elige la opcion=";
  89.        cin>>op;
  90.     }while(op<0 && op>8);
  91.     return(op);
  92.  
  93. }
  94.  
  95. //Lectura de datos
  96. //****************
  97.  
  98. void lecturapers(persona **p,int *dim)
  99. {    FILE *F;
  100.      int i;
  101.  
  102.     *p = (struct persona*) malloc (sizeof (struct persona));  
  103.        
  104.    
  105.      cout<<"Nombre(s):";
  106.      gets((*p)->nom);
  107.      cout<<"Apellido Paterno:";
  108.      gets((*p)->ap);
  109.      F = fopen("D:/trabajo/Agenda.dat","ab+");
  110.      if(F==NULL)
  111.             {
  112.                printf(" No se puede abrir el archivo\n");
  113.                system("pause");
  114.                exit(1);
  115.             }
  116.      fseek(F,0L,2);
  117.      fwrite(*p,sizeof(struct persona),1,F);
  118.      printf("\n\n\tDOCENTE ARCHIVADO!!!");
  119.      printf("\n\n\t");
  120.  
  121.      fclose(F);  
  122.      system("pause");
  123.  
  124.      
  125. }
  126.  
  127. void mostrarpers(persona *p,int dim)
  128.  
  129. {    FILE *F;
  130.      int i;  
  131.      F = fopen("D:/trabajo/Agenda.dat","rb");
  132.      if(F==NULL)
  133.      {
  134.          printf("\n\tNo se puede abrir el archivo\n");
  135.          system("pause");
  136.          exit(1);
  137.      }
  138.  
  139.      fread(p,sizeof(struct persona),1,F);
  140.      while(!feof(F))
  141.      {
  142.       printf("%s",p->nom);
  143.       printf("\t\t%s",p->ap);
  144.       cout<<"\n\n";
  145.      fread(p,sizeof(struct persona),1,F);
  146.          
  147.      }
  148.      fclose(F);
  149.      system("pause");
  150.  
  151. }

espero me puedas seguir ayudando ya falta poco para que tenga todo listo. gracias denuevo