J'ai bien noté le
Comment tester le retour du malloc ?malloc peut échouer (comme fopen)
ainsi ?
Pour les questions concernant le fichier à lire, je ne connais pas la taille ni le contenu à l'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 content = malloc(size+1); if(content !=NULL) { .. }
Il a été aussi question de libérer mon content une fois fini.. mais content est une variable de retour de fonction...
Dans ce cas, la mémoire ne se libère t-elle pas d'elle même ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 char * _ReadFile(const char *filename) { FILE* fSrc; char buffer[512]; int NbLu; char * content=NULL; long size = 0; fSrc=fopen(filename, "r"); if(fSrc != NULL) { fseek(fSrc, 0, SEEK_END); // aller en fin size = ftell(fSrc); // lire la taille fseek(fSrc, 0, SEEK_SET); // rétablir la position // alloc content = malloc(size+1); while((NbLu=fread(buffer, 1, 512, fSrc)) != 0) { strcat(content, buffer); } fclose(fSrc); } content[size+1] = '\0'; return content; }
Partager