Consultas
Tengo el siguiente código para realizar consultas en un fichero, lo saque de un tutorial, pero no me funciona, no muestra nada.
Este es el código, espero que me puedan ayudar.
consultar()
{
struct contactos
{
char apodo[35];
char nombre[35];
char apellidos[35];
char telefono[20];
char email[100];
} datos;
char clave[35];
clrscr();
printf ("Escriba el apodo a consultar...");
scanf ("%s",clave);
REGISTROS = fopen ("DATA.TXT", "at+");
while (fread(&datos,sizeof(datos),1,REGISTROS)==1)
{
if (clave==datos.apodo)
{
printf ("nn");
printf ("APODO %sn",datos.apodo);
printf ("NOMBRE %sn",datos.nombre);
printf ("APELLIDOS %sn",datos.apellidos);
printf ("TELEFONO %sn",datos.telefono);
printf ("E-MAIL %sn",datos.email);
}
}
fclose (REGISTROS);
getch();
}
Este es el código, espero que me puedan ayudar.
consultar()
{
struct contactos
{
char apodo[35];
char nombre[35];
char apellidos[35];
char telefono[20];
char email[100];
} datos;
char clave[35];
clrscr();
printf ("Escriba el apodo a consultar...");
scanf ("%s",clave);
REGISTROS = fopen ("DATA.TXT", "at+");
while (fread(&datos,sizeof(datos),1,REGISTROS)==1)
{
if (clave==datos.apodo)
{
printf ("nn");
printf ("APODO %sn",datos.apodo);
printf ("NOMBRE %sn",datos.nombre);
printf ("APELLIDOS %sn",datos.apellidos);
printf ("TELEFONO %sn",datos.telefono);
printf ("E-MAIL %sn",datos.email);
}
}
fclose (REGISTROS);
getch();
}
Seguro que esta sacado de un tutorial?tiene fallos gordos de programacion.
Por ej falta declarar FILE *REGISTROS; para poder utilizarlo .
Lo mas gordo es que compara 2 strings por medio de == ,aqui lo unico que esta haciendo es comparando
2 punteros o direcciones de memoria ,con lo que como no es la misma siempre sera falso .Para comparar string hay funciones en la libreria standar como strcmp()
Y para finalizar esta funcion no te va a funcionar si no tienes el archivo datos.txt
Por ej falta declarar FILE *REGISTROS; para poder utilizarlo .
Lo mas gordo es que compara 2 strings por medio de == ,aqui lo unico que esta haciendo es comparando
2 punteros o direcciones de memoria ,con lo que como no es la misma siempre sera falso .Para comparar string hay funciones en la libreria standar como strcmp()
Y para finalizar esta funcion no te va a funcionar si no tienes el archivo datos.txt
