Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(){
struct{
char nombre[50];
char direccion[100];
char movil[10];
char email[100];
short int nDia;
short int nMes;
short int nAno;
}persona[100];
int i;
int numeroFicha=0;
int opcion=1;
char textoTemporal[40];
FILE *fichero;
printf("1.- A%adir ficha nueva\n\n",164);
printf("2.- Visualizar nombres de fichas existentes\n\n");
printf("3.- Buscar por nombre\n\n");
while(opcion != 0){
printf("Teclee su opcion: ");
gets(textoTemporal);
sscanf(textoTemporal,"%d",&opcion);
switch(opcion){
case 1:
if(numeroFicha<100){
fichero=fopen("gente.dat","ab");
printf("Nombre: ");
gets(persona[numeroFicha].nombre);
printf("Direccion: ");
gets(persona[numeroFicha].direccion);
printf("Telefono movil: ");
gets(persona[numeroFicha].movil);
printf("Email: ");
gets(persona[numeroFicha].email);
printf("Dia de nacimiento: ");
gets(textoTemporal);
sscanf(textoTemporal,"%d",&persona[numeroFicha].nDia);
printf("Mes de nacimiento: ");
gets(textoTemporal);
sscanf(textoTemporal,"%d",&persona[numeroFicha].nMes);
printf("Año de nacimiento: ");
gets(textoTemporal);
sscanf(textoTemporal,"%d",&persona[numeroFicha].nAno);
fwrite(persona[numeroFicha].nombre,1,sizeof(persona[numeroFicha].nombre),fichero);
fwrite(persona[numeroFicha].direccion,1,sizeof(persona[numeroFicha].direccion),fichero);
fwrite(persona[numeroFicha].movil,1,sizeof(persona[numeroFicha].movil),fichero);
fwrite(persona[numeroFicha].email,1,sizeof(persona[numeroFicha].email),fichero);
fwrite(&persona[numeroFicha].nDia,sizeof(persona[numeroFicha].nDia),1,fichero);
fwrite(&persona[numeroFicha].nMes,sizeof(persona[numeroFicha].nMes),1,fichero);
fwrite(&persona[numeroFicha].nAno,sizeof(persona[numeroFicha].nAno),1,fichero);
numeroFicha++;
fclose(fichero);
}
else{
printf("Limite de fichas alcanzado");
}
break;
case 2:
fichero=fopen("gente.dat","rb");
for(i=0;i<numeroFicha;i++){
fread(persona[i].nombre,1,sizeof(persona[i].nombre),fichero);
puts(persona[i].nombre);
fread(persona[i].direccion,1,sizeof(persona[i].direccion),fichero);
fread(persona[i].movil,1,sizeof(persona[i].movil),fichero);
fread(persona[i].email,1,sizeof(persona[i].email),fichero);
fread(&persona[i].nDia,sizeof(persona[i].nDia),1,fichero);
fread(&persona[i].nMes,sizeof(persona[i].nMes),1,fichero);
fread(&persona[i].nAno,sizeof(persona[i].nAno),1,fichero);
}
fclose(fichero);
break;
}
}
}
#include <stdlib.h>
#include <string.h>
main(){
struct{
char nombre[50];
char direccion[100];
char movil[10];
char email[100];
short int nDia;
short int nMes;
short int nAno;
}persona[100];
int i;
int numeroFicha=0;
int opcion=1;
char textoTemporal[40];
FILE *fichero;
printf("1.- A%adir ficha nueva\n\n",164);
printf("2.- Visualizar nombres de fichas existentes\n\n");
printf("3.- Buscar por nombre\n\n");
while(opcion != 0){
printf("Teclee su opcion: ");
gets(textoTemporal);
sscanf(textoTemporal,"%d",&opcion);
switch(opcion){
case 1:
if(numeroFicha<100){
fichero=fopen("gente.dat","ab");
printf("Nombre: ");
gets(persona[numeroFicha].nombre);
printf("Direccion: ");
gets(persona[numeroFicha].direccion);
printf("Telefono movil: ");
gets(persona[numeroFicha].movil);
printf("Email: ");
gets(persona[numeroFicha].email);
printf("Dia de nacimiento: ");
gets(textoTemporal);
sscanf(textoTemporal,"%d",&persona[numeroFicha].nDia);
printf("Mes de nacimiento: ");
gets(textoTemporal);
sscanf(textoTemporal,"%d",&persona[numeroFicha].nMes);
printf("Año de nacimiento: ");
gets(textoTemporal);
sscanf(textoTemporal,"%d",&persona[numeroFicha].nAno);
fwrite(persona[numeroFicha].nombre,1,sizeof(persona[numeroFicha].nombre),fichero);
fwrite(persona[numeroFicha].direccion,1,sizeof(persona[numeroFicha].direccion),fichero);
fwrite(persona[numeroFicha].movil,1,sizeof(persona[numeroFicha].movil),fichero);
fwrite(persona[numeroFicha].email,1,sizeof(persona[numeroFicha].email),fichero);
fwrite(&persona[numeroFicha].nDia,sizeof(persona[numeroFicha].nDia),1,fichero);
fwrite(&persona[numeroFicha].nMes,sizeof(persona[numeroFicha].nMes),1,fichero);
fwrite(&persona[numeroFicha].nAno,sizeof(persona[numeroFicha].nAno),1,fichero);
numeroFicha++;
fclose(fichero);
}
else{
printf("Limite de fichas alcanzado");
}
break;
case 2:
fichero=fopen("gente.dat","rb");
for(i=0;i<numeroFicha;i++){
fread(persona[i].nombre,1,sizeof(persona[i].nombre),fichero);
puts(persona[i].nombre);
fread(persona[i].direccion,1,sizeof(persona[i].direccion),fichero);
fread(persona[i].movil,1,sizeof(persona[i].movil),fichero);
fread(persona[i].email,1,sizeof(persona[i].email),fichero);
fread(&persona[i].nDia,sizeof(persona[i].nDia),1,fichero);
fread(&persona[i].nMes,sizeof(persona[i].nMes),1,fichero);
fread(&persona[i].nAno,sizeof(persona[i].nAno),1,fichero);
}
fclose(fichero);
break;
}
}
}
Alguien sabe por que no se muestran los nombres de las fichas por pantalla cuando escojo la 2ª opcion???
gracias