Hola soy nuevo en este foro!!! Necesito si me pueden ayudar con esta agenda en C que ya me volvio totalmente loco!!! ja!!!
Hace casi todo bien pero una vez que yo ingrese los datos y le di guardar cuando elijo la opcion de ver contacto me aparece lo que yo ingrese pero si cierro el programa y lo abro no tengo nada!!!
Les Agradeceria mucho si em ayudan!!!! aca les dejo el codigo
Código: c
Hace casi todo bien pero una vez que yo ingrese los datos y le di guardar cuando elijo la opcion de ver contacto me aparece lo que yo ingrese pero si cierro el programa y lo abro no tengo nada!!!
Les Agradeceria mucho si em ayudan!!!! aca les dejo el codigo
////////////////////////////////////////agenda//////////////////////////////////////////////////
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>
#include<DOS.H>
#include<time.h>
struct fechanac{
int dia;
int mes;
int ano;
} fn;
struct a{
char nombre[10];
char apellido[10];
int edad;
long int tel;
long int dni;
char correo[30];
struct fechanac fn;
} con[30];
int validarnomap(int);
int validarcorreo (char*);
void main()
{
//----------------------------VARIABLES----------------------------------------------
int op=0,x=0,s=0,o=0,y=0,j=0,p=0,i=0,lgo=0,cont=0,time_t,t;
int vf;
int vff=0,a4=0,a100=0,a400=0,d=0;
long int nro=0;
char string[30];
//-----------------------------ARCHIVO-----------------------------------------
FILE *v;
v=fopen("agendaCRIS.txt","a+");
//-----------------------------REPETICION DEL MENU---------------------------------
do
{
//---------------------------CARGA DE DATOS------------------------------------
x=0;
while (x<2)
{
fscanf (v,"%s",&con[x].nombre);
fscanf (v,"%s",&con[x].apellido);
fscanf (v,"%d",&con[x].edad);
fscanf (v,"%2d/%2d/%4d",&con[x].fn.dia,&con[x].fn.mes,&con[x].fn.ano);
fscanf (v,"%ld",&con[x].tel);
fscanf (v,"%ld",&con[x].dni);
fscanf (v,"%s",&con[x].correo);
x++;
}
//------------------------------MENU--------------------------------------------------
textbackground(RED);
textcolor(WHITE);
clrscr ();
gotoxy(20,2) ;printf ("|||||||||||||||||||||||||||||||||\n");
gotoxy(20,3) ;printf ("|| AGENDA ||\n");
gotoxy(20,4) ;printf ("|||||||||||||||||||||||||||||||||\n");
gotoxy(20,5) ;printf ("|| 1_ Ingresar Contacto ||\n");
gotoxy(20,6) ;printf ("|| 2_ Ver un contacto ||\n");
gotoxy(20,7) ;printf ("|| 3_ Ver todos los contactos ||\n");
gotoxy(20,8) ;printf ("|| 4_ Editar Contacto ||\n");
gotoxy(20,9) ;printf ("|| 5_ Guardar ||\n");
gotoxy(20,10);printf ("|| 6_ Salir ||\n");
gotoxy(20,11);printf ("|||||||||||||||||||||||||||||||||\n");
printf ("\n");
gotoxy(20,13);printf ("|||||||||||||||||||||||||||||||||\n");
gotoxy(20,14);printf ("|| INGRESE OPCION: ||\n");
gotoxy(20,15);printf ("|||||||||||||||||||||||||||||||||\n");
gotoxy(20,20) ;printf("Copyrights@ by CRISTIAN ALLEMAND\n");
gotoxy(29,21) ;printf("Diciembre 2010\n");
gotoxy(39,14);scanf ("%d",& op);
printf ("\n\n");
//--------------------------OPERACIONES---------------------------------------------
clrscr();
switch (op)
{
case 1:
x=0;
while (x<30)
{
if(con[x].nombre[x] =='\x0')
{
printf ("> Contacto Numero %d\n",(x+1));
printf ("> Ingrese Nombre(sin espacios previos):");
scanf ("%s",con[x].nombre);
o=validarnomap(x);
if(o==0)
{
printf(" BIEN ESCRITO\n");
}
else
{
printf(" MAL ESCRIT\n");
getch();
clrscr();
gotoxy(20,4); printf ("|||||||||||||||||||||||||||||||||||||||||");
gotoxy(20,5); printf ("|| 1_ <+> Volver al menu Principal ||\n");
gotoxy(20,6); printf ("|| 2_ <+> Salir ||\n");
gotoxy(20,7); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(20,8); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(20,9); printf ("|| INGRESE OPCION: ||\n");
gotoxy(20,10);printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(39,9); scanf("%d",&s);
if(s==1)
{
x=33;x++;
break;
}
else
{
if(s==2)
{
exit(0);
}
}
break;
}
//------------------------------
do{
printf("\nFecha de Nac:\n");
fflush(stdin);
printf("Dia: ");
scanf("%d",&con[x].fn.dia);
printf("Mes: ");
scanf("%d",&con[x].fn.mes);
printf("Año: ");
scanf("%d",&con[x].fn.ano);
p=con[x].fn.mes%2;
if((con[x].fn.mes>0)&&(con[x].fn.mes<13))
{
if(con[x].fn.mes==2)
{
a4=con[x].fn.ano%4;
a100=con[x].fn.ano%100;
a400=con[x].fn.ano%400;
if(a4==0)
{
if(a100==0)
{
if(a400==0)
{
d=30;
}
else
{
d=29;
}
}
else
{
d=30;
}
}
else
{
d=29;
}
}
else
{
if(con[x].fn.mes<8)
{
if(p==0)
{
d=31;
}
else
{
d=32;
}
}
else
{
if(p==0)
{
d=32;
}
else
{
d=31;
}
}
}
if(con[x].fn.dia<d)
{
vf=1;
}
else
{
printf("\nFecha no valida.....!!!");
}
}
else
{
printf("\nFecha no valida.....!!!");
}
}while(vf!=1);
do
{
printf ("> Ingrese numero de telefono: ");
scanf ("%ld",&con[x].tel);
ltoa(con[x].tel,string,10);
nro=validarnro(string);
if(nro!=0)
{
printf(" ERROR....!!!\n");
vff=1;
}
else
{
vff=0;
}
}while(vff!=1);
printf ("> Ingrese DNI: ");
scanf ("%d",&con[x].dni);
o=con[x].dni;
if(o>99999999)
{
printf("ERROR !! dni no valido\n");
}
printf ("> Ingrese correo electronico: ");
scanf ("%s",con[x].correo);
nro=validarcorreo(con[x].correo);
if(nro==0)
{
printf("ERROR falta el '@'\n");
}
else
{
if(nro==1)
{
printf("ERROR falta el domino ej:'.com','.com.ar','.net',etc\n");
}
}
getch();
clrscr();
gotoxy(20,4); printf ("|||||||||||||||||||||||||||||||||||||||||");
gotoxy(20,5); printf ("|| 1_ <+> Volver al menu principal ||\n");
gotoxy(20,6); printf ("|| 2_ <+> Salir ||\n");
gotoxy(20,7); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(20,8); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(20,9); printf ("|| INGRESE OPCION: ||\n");
gotoxy(20,10);printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(39,9); scanf("%d",&s);
if(s==2)
{
x=33;
}
}
x++;
}
break;
case 2:
{
x=0;
printf ("Ingrse numero de contacto que desea ver: ");
scanf ("%d",&x);
x--;
printf ("\n> Contacto Nun %d\n",(x+1));
printf ("> Nombre: %s\n",con[x].nombre);
printf ("> Apellido: %s\n",con[x].apellido);
printf ("> Edad(A¥os): %d\n",con[x].edad);
printf ("> Fecha de nacimiento: %2d/%2d/%4d\n",con[x].fn.dia,con[x].fn.mes,con[x].fn.ano);
printf ("> Numero de telefono: %d\n",con[x].tel);
printf ("> DNI: %d\n",con[x].dni);
printf ("> Correo electronico: %s\n",con[x].correo);
}
getch();
break;
case 3:
{
x=0;
while (con[x].nombre[x] !='\x0')
{
printf ("\n> Contacto Nun %d\n",(x+1));
printf ("> Nombre: %s\n",con[x].nombre);
printf ("> Apellido: %s\n",con[x].apellido);
printf ("> Edad(A¥os): %d\n",con[x].edad);
printf ("> Fecha de nacimiento: %2d/%2d/%4d\n",con[x].fn.dia,con[x].fn.mes,con[x].fn.ano);
printf ("> Numero de telefono: %d\n",con[x].tel);
printf ("> DNI: %d\n",con[x].dni);
printf ("> Correo electronico: %s\n",con[x].correo);
x++;
}
}
getch();
break;
case 4:
{
x=0;
printf ("TENER EN CUENTA QUE LOS DATOS VIEJOS SE PERDERAN!!");
printf ("Ingrese numero de contacto que desea re ingresar: ");
scanf ("%d",&x);
x--;
printf ("> Ingrese Nombre(sin espacios previos):");
scanf ("%s",con[x].nombre);
o=validarnomap(x);
if(o==0)
{
printf(" BIEN ESCRITO\n");
}
else
{
printf(" MAL ESCRIT\n");
getch();
clrscr();
gotoxy(20,4); printf ("|||||||||||||||||||||||||||||||||||||||||");
gotoxy(20,5); printf ("|| 1_ <+> Volver al menu Principal ||\n");
gotoxy(20,6); printf ("|| 2_ <+> Salir ||\n");
gotoxy(20,7); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(20,8); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(20,9); printf ("|| INGRESE OPCION: ||\n");
gotoxy(20,10);printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(39,9); scanf("%d",&s);
if(s==1)
{
x=33;x++;
break;
}
else
{
if(s==2)
{
exit(0);
}
}
break;
}
//------------------------------
do{
printf("\nFecha de Nac:\n");
fflush(stdin);
printf("Dia: ");
scanf("%d",&con[x].fn.dia);
printf("Mes: ");
scanf("%d",&con[x].fn.mes);
printf("Año: ");
scanf("%d",&con[x].fn.ano);
p=con[x].fn.mes%2;
if((con[x].fn.mes>0)&&(con[x].fn.mes<13))
{
if(con[x].fn.mes==2)
{
a4=con[x].fn.ano%4;
a100=con[x].fn.ano%100;
a400=con[x].fn.ano%400;
if(a4==0)
{
if(a100==0)
{
if(a400==0)
{
d=30;
}
else
{
d=29;
}
}
else
{
d=30;
}
}
else
{
d=29;
}
}
else
{
if(con[x].fn.mes<8)
{
if(p==0)
{
d=31;
}
else
{
d=32;
}
}
else
{
if(p==0)
{
d=32;
}
else
{
d=31;
}
}
}
if(con[x].fn.dia<d)
{
vf=1;
}
else
{
printf("\nFecha no valida.....!!!");
}
}
else
{
printf("\nFecha no valida.....!!!");
}
}while(vf!=1);
do
{
printf ("> Ingrese numero de telefono: ");
scanf ("%ld",&con[x].tel);
ltoa(con[x].tel,string,10);
nro=validarnro(string);
if(nro!=0)
{
printf(" ERROR....!!!\n");
vff=1;
}
else
{
vff=0;
}
}while(vff!=1);
printf ("> Ingrese DNI: ");
scanf ("%d",&con[x].dni);
o=con[x].dni;
if(o>99999999)
{
printf("ERROR !! dni no valido\n");
}
printf ("> Ingrese correo electronico: ");
scanf ("%s",con[x].correo);
nro=validarcorreo(con[x].correo);
if(nro==0)
{
printf("ERROR falta el '@'\n");
}
else
{
if(nro==1)
{
printf("ERROR falta el domino ej:'.com','.com.ar','.net',etc\n");
}
}
getch();
clrscr();
gotoxy(20,4); printf ("|||||||||||||||||||||||||||||||||||||||||");
gotoxy(20,5); printf ("|| 1_ <+> Volver al menu principal ||\n");
gotoxy(20,6); printf ("|| 2_ <+> Salir ||\n");
gotoxy(20,7); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(20,8); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(20,9); printf ("|| INGRESE OPCION: ||\n");
gotoxy(20,10);printf ("|||||||||||||||||||||||||||||||||||||||||\n");
gotoxy(39,9); scanf("%d",&s);
if(s==1)
{
x=33;
x++;
}
if(s==2)
{
exit(0);
}
}
getch();
break;
case 5:
{
x=0;
while (con[x].nombre[x] !='\x0')
{
fprintf (v,"%s\n",con[x].nombre);
fprintf (v,"%s\n",con[x].apellido);
fprintf (v,"%2d/%2d/%4d\n",con[x].fn.dia,con[x].fn.mes,con[x].fn.ano);
fprintf (v,"%d\n",con[x].tel);
fprintf (v,"%d\n",con[x].dni);
fprintf (v,"%s\n",con[x].correo);
x++;
}
}
break;
}
//-----------------------------REPETICION DEL MENU---------------------------------
}
while (op !=6);
//----------------------------------FIN----------------------------------------
fclose(v);
}
void espera(long sec)
{
long inicio, actual;
time(&inicio) ;
time(&actual) ;
while((actual-inicio)<sec)
{
time(&actual) ;
}
}
int validarnomap (x)
{
int lgo=0,i=0,cont=0, o=0;
lgo=strlen(con[x].nombre);
while(i<lgo)
{
if(isalpha(con[x].nombre[i]))
{
cont++;
}
i++;
}
if(lgo>0 && cont==lgo)
{
o=0;
return o; //esta bien escrito
}
else
{
o=1;
return o; //esta mal escrito
}
}
int validarnro (char* string)
{
//printf("Evaluando el contacto %d", x);
int lgo=0,i=0,cont=0, nro=0;
lgo=strlen(string);
while(i<lgo)
{
if(isdigit(string[i]))
{
cont++;
}
i++;
}
if(lgo>0 && cont==lgo)
{
nro=0;
return nro; //esta bien escrito
}
else
{
nro=1;
return nro; //esta mal escrito
}
}
int validarcorreo(char* correo)
{
int i, j, flag,x,nro=6;
j = 0;
flag = 0; /* <- Buscar la '@' */
for(i = 0; i < strlen(correo); i++)
{
if (flag == 1)
{
if (correo[i] == '.')
{
j = i+1;
break;
}
}
else if (flag == 0)
if (correo[i] == '@')
flag++; /* <- Buscar el '.' */
}
if (flag == 0)
{
nro=0;
return nro; //("No Valido. Falta la @\n");
}
else
{
nro=1;
return nro; //("No Valido. Falta el dominio\n");
}
}

