#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;
}
}
}
Alguien sabe por que no se muestran los nombres de las fichas por pantalla cuando escojo la 2ª opcion???
gracias
veo visiones? me salia el codigo en una marquesina de lado a lado :o
A mi tambien :xD igual no manejo archivos en C...
jajajaja no veis visiones xdd. Lo puse sin querer en un marco xd
Bueno, alguna solucion??
Cita de: ctlon en 29 Julio 2010, 20:40 PM
veo visiones? me salia el codigo en una marquesina de lado a lado :o
A mí no me sale ninguna marquesina :-\
Sobre el código:
- Declaras main() que no es standard. Pásate por acá (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).
- Es lógico que no vaya la segunda opción. Yo por ejemplo, no tengo creado este fichero, por lo tanto caigo en un bucle infinito. Haz una opción para cuando no tengas el fichero, vuelva a main().
Saludos :P
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Ya esta solucionado. Los datos se guardaban en el fichero pero no el numero de fichas
xd.
Al usar fopen("gente.dat","wb"); si no tienes el fichero se crea automaticamente
saludos
Cita de: Gr1nD3r en 29 Julio 2010, 20:55 PM
Ya esta solucionado. Los datos se guardaban en el fichero pero no el numero de fichas
xd
Igualmente mírate mi respuesta, que tienes errores graves ;)
Saludos :P
K error grave?
Cita de: Gr1nD3r en 29 Julio 2010, 20:57 PM
K error grave?
Te vuelvo a repetir que mires mi primera respuesta.
Saludos :P
Como seria la declaracion standar de main??
Cita de: Gr1nD3r en 29 Julio 2010, 21:19 PM
Como seria la declaracion standar de main??
//...
int main()
{
//...
return 0; //No siempre es 0
}
Saludos :P