¿Podrías decirme que sentencia para nombrar a una persona especifica y donde va en el programa?

Ya tengo casi el proyecto el cual es un directorio telefónico, lo que me hace falta es pedir el nombre de una persona especifica, me podrías decir por favor que sentencia y donde va dentro del programa
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct informacion
{
char nombre[64];
char direccion[256];
char telefono[10];
};
void pedir_informacion(struct informacion*);
void ver_informacion(struct informacion*);
main()
{
char nombre[64];
char op;
FILE*fichero;
fichero=fopen("informacion.dat","ab");
if(fichero==NULL)
{
printf("\nError al intentar abrir el fichero informacion.dat");
exit(0);
}
struct informacion persona;
printf("\n¿Desea introducir registros al directorio(S/N):");
op=(char)getch();
while(op!='n'&&op!='N')
{
pedir_informacion(&persona);
fwrite(&persona,sizeof(persona),1,fichero);
printf("\Desea introducir otro registro(S/N):");
op=(char)getch();
}
printf("\nDesea leer los registros del directorio(S/N):");
op=(char)getch();
fclose(fichero);
printf("\nIngrese el nombre a buscar:\n");
scanf("%d",&nombre);
fichero=fopen("informacion.dat","rb");
while(!feof(fichero))
{
fread(&persona,sizeof(struct informacion),1,fichero);
break;
}
while(op!='n'&&op!='N')
{
if(fread(&persona,sizeof(persona),1,fichero)==0)
break;
ver_informacion(&persona);
printf("\nDesea consultar otro registro(S/N):");
op=(char)getch();
printf("\nIngrese el nombre a buscar:\n");
scanf("%s",&nombre);
}
printf("\nPresione una tecla para finalizar:");
fclose(fichero);
getch();
return 0;
}
void pedir_informacion(struct informacion*persona)
{
printf("\nNombre:");
scanf("%s",persona->nombre);
printf("\nDireccion:");
scanf("%s",persona->direccion);
printf("\nTelefono:");
scanf("%s",persona->telefono);
}
void ver_informacion(struct informacion*persona)
{
printf("\nNombre:%s",persona->nombre);
printf("\nDireccion:%s",persona->direccion);
printf("\nTelefono:%s",persona->telefono);
}

1 respuesta

Respuesta
1
Bueno el programa esta muy bien desarrolado y la verdad es que solo se me ocurre que compares las cadenas nombre y apellido con todos los registros del fichero más o menos seria así(no se te olvide poner la librería string. H al principio). Esto es la parte en la que tu buscas el nombre dentro del directorio:
printf("\nDesea leer los registros del directorio(S/N):");
op=(char)getch();
fclose(fichero);
printf("\nIngrese el nombre a buscar:\n");
scanf("%d",&nombre);
scanf("%d",&apellido);
fichero=fopen("informacion.dat","rb");
while(!feof(fichero))
{
fread(&persona,sizeof(struct informacion),1,fichero);//lees hasta que sea finas de fichero
if((strcmp(nombre,persona.nombre)==0)&&(strcmp(apellido==persona.apellido)==0))//si coincide apellido y nombre lo muestra
{
ver_informacion(&persona);
Fclose(fichero);//cierras el descriptor del fichero y le abres después para que inicie la usqueda desde el principio
o bien pones SEEK_SET con la función fseek
break;
}
printf("\nDesea consultar otro registro(S/N):");
op=(char)getch();
printf("\nIngrese el nombre a buscar:\n");
scanf("%d",&nombre);
scanf("%d",&apellido);
fichero=fopen("informacion.dat","rb");
while(!feof(fichero))
{
fread(&persona,sizeof(struct informacion),1,fichero);
if((strcmp(nombre,persona.nombre)==0)&&(strcmp(apellido==persona.apellido)==0))//si apellido y nombre son iguales lo muestra
{
ver_informacion(&persona);
break;
}
}
printf("\nPresione una tecla para finalizar:");
fclose(fichero);
getch();
return 0;
}
PErdoname si me he equivocado en algo pero es que no ando mu fino últimamente :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas