La cuestion es que ingrese los datos todo bien, luego voy al submenu mostrar y me sale pero una vez que quiero ingreso denuevo no me muestra el anterior (sobreescribe). Una vez cierro el programa y vuelvo a entrar y pongo mostrar y solo sale basura.
El problema creo q es en fread y fwrite pero no logro arreglarlo. Espero que me puedan ayudar aqui esta el codigo.
Código agenda:
Ver original
#include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <conio.c> #include <string.h> #include <math.h> using std::iostream; using std::cout; using std::cin; using std::endl; struct fecha { int dd; int mm; int aaaa; }; struct direccion { char dir[50]; char disto[50]; char dpto[50]; char pais[50]; }; struct persona { char cod[8]; char ap[20]; char am[20]; char nom[50]; int sex; fecha fnac; direccion dir; }; //declaracion de funciones //************************ int menu(); void lecturapers(persona **p,int *dim); void mostrarpers(persona *p,int dim); //Principal //********* int main() { persona *a; int opcion,n; textbackground(15); textcolor(0); do{ system("cls"); opcion=menu(); switch(opcion) { case 0: exit(1); case 1: system("cls"); lecturapers(&a,&n); break; case 2: system("cls"); mostrarpers(a,n); break; } }while(opcion); system("PAUSE"); return 0; } //Menu de Opciones //**************** int menu() { int op; cout<<"\n \t\t\t DIRECTORIO TELEFONICO\n"; cout<<"\t\t\t ---------------------\n\n\n"; cout<<"\t\t\t [1]Ingresar Datos\n"; cout<<"\t\t\t [2]Mostrar Personas\n"; cout<<"\t\t\t [0]Salir del directorio\n\n"; do{ cout<<"\n\t\t\t Elige la opcion="; cin>>op; }while(op<0 && op>8); return(op); } //Lectura de datos //**************** void lecturapers(persona **p,int *dim) { FILE *F; int i; *p=new (struct persona); cout<<"Nombre(s):"; gets((*p)->nom); cout<<"Apellido Paterno:"; gets((*p)->ap); F = fopen("D:/trabajo/Agenda.dat","a+"); if(F==NULL) { printf(" No se puede abrir el archivo\n"); system("pause"); exit(1); } fwrite(&p,sizeof(*p),1,F); printf("\n\n\tDOCENTE ARCHIVADO!!!"); printf("\n\n\t"); fclose(F); system("pause"); } void mostrarpers(persona *p,int dim) { FILE *F; int i; F = fopen("D:/trabajo/Agenda.dat","a++"); if(F==NULL) { printf("\n\tNo se puede abrir el archivo\n"); exit(1); } while(!feof(F)) { printf("%s",p->nom); printf("\t\t%s",p->ap); cout<<"\n\n"; fread(&p,sizeof(*p),1,F); } fclose(F); system("pause"); }
gracias por su atencion.