ayuda fread

Iniciado por Gr1nD3r, 29 Julio 2010, 20:38 PM

0 Miembros y 1 Visitante están viendo este tema.

Gr1nD3r


#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

bizco

veo visiones? me salia el codigo en una marquesina de lado a lado  :o

.:BlackCoder:.

A mi tambien  :xD igual no manejo archivos en C...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Gr1nD3r

jajajaja no veis visiones xdd. Lo puse sin querer en un marco xd

Bueno, alguna solucion??

Horricreu

#4
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á.
  • 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.

Gr1nD3r

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

Horricreu

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

Gr1nD3r


Horricreu

Cita de: Gr1nD3r en 29 Julio 2010, 20:57 PM
K error grave?

Te vuelvo a repetir que mires mi primera respuesta.

Saludos :P

Gr1nD3r

Como seria la declaracion standar de main??