[C] fread -> segmentation fault

bonobo78 Messages postés 9 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 29 octobre 2003 - 28 oct. 2003 à 18:05
bonobo78 Messages postés 9 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 29 octobre 2003 - 28 oct. 2003 à 19:51
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 :(
A voir également:

2 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
28 oct. 2003 à 18:34
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);
}
0
bonobo78 Messages postés 9 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 29 octobre 2003
28 oct. 2003 à 19:51
merci bcp pour cette préciseuce explication :)
0