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#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.c>
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);
unsigned short seekEnd(const FILE* F);
//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 = (struct persona*) malloc (sizeof (struct persona));
cout<<"Nombre(s):";
gets((*p)->nom);
cout<<"Apellido Paterno:";
gets((*p)->ap);
F = fopen("D:/trabajo/Agenda.dat","ab+");
if(F==NULL)
{
printf(" No se puede abrir el archivo\n");
system("pause");
exit(1);
}
fseek(F,0L,2);
fwrite(*p,sizeof(struct persona),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","rb");
if(F==NULL)
{
printf("\n\tNo se puede abrir el archivo\n");
system("pause");
exit(1);
}
fread(p,sizeof(struct persona),1,F);
while(!feof(F))
{
printf("%s",p->nom);
printf("\t\t%s",p->ap);
cout<<"\n\n";
fread(p,sizeof(struct persona),1,F);
}
fclose(F);
system("pause");
}
espero me puedas seguir ayudando ya falta poco para que tenga todo listo. gracias denuevo