[C] fread -> segmentation fault

Signaler
Messages postés
9
Date d'inscription
mardi 28 octobre 2003
Statut
Membre
Dernière intervention
29 octobre 2003
-
Messages postés
9
Date d'inscription
mardi 28 octobre 2003
Statut
Membre
Dernière intervention
29 octobre 2003
-
j'arrive pas a faire un fread :(

void lecture_fichier( char path ) {

FILE * File;
char *message;

File = fopen(path,"r");
message = (char*)malloc(1024);

fread(&message,1024,1,File);
printf("fread = %s\n",message);

free(message);
fclose(File);
}

lorque j'execute ce bout de code au niveau du fread j'ai une erreure : segmentation fault :(

2 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,

1) Il faut passer un pointeur en parametre, donc char * path.
2) Le premier parametre de fread est un char*, et comme tu declare message en char *message;, pas besoin de mettre le '&' devant:
fread(message,1024,1,File); // marche
3) Ensuite, printf ecrira la chaine message jusqu'au zero final... dans ton code il n'y a pas de zero final, il faut donc mettre tout le buffer a 0 avant d'y ecrire le fichier dedant.
Apres le malloc: memset(message, 0, 1024);

et ca marche.

void lecture_fichier( char * path )
{

FILE * File;
char *message;

File = fopen(path,"r");
message = (char*)malloc(1024);
memset(message, 0, 1024);

fread(message,1024,1,File);
printf("fread = %s\n",message);

free(message);
fclose(File);
}
Messages postés
9
Date d'inscription
mardi 28 octobre 2003
Statut
Membre
Dernière intervention
29 octobre 2003

merci bcp pour cette préciseuce explication :)