elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Problema en C con la funcion fread y fwrite en: 26 Marzo 2015, 15:57 pm
Buenas, estoy haciendo un ejercicio de programacion en C en el cual tengo que lograr lo siguiente: Crear un "struct" que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia. Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado "gente1.dat", usando "fwrite". Cerrar el fichero, volverlo a abrir para lectura y mostrar los datos que se habían guardado, que se deben leer con "fread".

Aun me cuesta entender como funciona exactamente la orden fread y fwrite, por ejemplo, escribiendo: fread(&ficha, sizeof(ficha), 1, fichero); &ficha se refiere al lugar donde se guardan los datos, sizeof(ficha) el tamaño de los datos, el 1 a la cantidad de datos a leer, pero ¿hasta donde se lee?, ¿hasta que encuentre un \0 o \n?, no entiendo muy bien ese 1.

Bueno, aqui os dejo mi intento del ejercicio anterior, el cual casi al finalizar me tira "programa.exe has stopped working" y no se donde está el error.
Edit: Aclarar que el programa me da dos warning: "assignment make pointer from integer without a cast"
Código:
#include <stdio.h>
#include <string.h>

int main(){

struct{
char Name[100],City[100];
int Age;
}Persona;
FILE *Gente1;
int X;

if(Gente1=fopen("gente1.dat","ab")==NULL){
    printf("No se puede escribir en el fichero...\n");
}
else{
    printf("Que nombre deseas introducir?: ");
    fflush(stdin);
    gets(Persona.Name);
    printf("\nCiudad?: ");
    fflush(stdin);
    gets(Persona.City);
    printf("\nEdad?: ");
    fflush(stdin);
    scanf("%d",&Persona.Age);
    fwrite(&Persona,sizeof(Persona),1,Gente1);
    fclose(Gente1);
}

if(Gente1=fopen("gente1.dat","rb")==NULL){
    printf("\nNo se puede leer el fichero...\n");
}
else{
    while(!feof(Gente1)){
        fread(&Persona,sizeof(Persona),1,Gente1);
        puts(Persona.Name);
        puts(Persona.City);
        printf("%s\n",Persona.Age);
    }
    fclose(Gente1);
}

fflush(stdin);
getchar();
return 0;
}

Muchas gracias de antemano!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines