Bonjour,
J'ai une fonction chargée de lire un fichier dont la longueur de l'enregistrement est inconnu (variable).
Je passe en argument à cette fonction le path du fichier.
J'arrive à ouvrir le fichier, à récupérer la taille de enregistrement contenu dans le fichier.
Ensuite j'alloue avec malloc la taille nécessaire pour stocker les données dans une variable.
C'est là que mon problème commence....
Suite à l'allocation, le path passé en argument à la fonction est altéré.
Cela fait des heures que je cherche pourquoi sans trouver la réponse.
J'image que j'écrase quelque part une zone mémoire, mais je ne comprend pas pourquoi.
Un petit coup de main serait le bienvenue.
Merci
Voici la fonction ci-dessous
le display issue des printf :
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 char *ReadTmpFile(const char *tmpfile){ long fsize; char *filedata; size_t result; FILE *pf=NULL; if(tmpfile==NULL){ printf("Error: invalid tmp file name") return NULL;} pf=fopen(tmpfile,"r"); if(pf==NULL){ printf("%s",strerror(errno)); return NULL; } fseek(pf,0,SEEK_END); fsize=ftell(pf); rewind(pf); printf("<br>6- %s %d",tmpfile,strlen(tmpfile)); /* ici c'est OK*/ filedata = (char*) malloc (sizeof(char)*(fsize+1)); if(filedata==NULL){ printf("Error: Allocation failed"); return 0;} printf("<br>7- %s %d",tmpfile,strlen(tmpfile)); /* ici c'est mort...*/ result=fread(filedata,1,fsize,pf); if(result!=fsize){ printf("Error: Unable to read tmp file"); return NULL;} fclose(pf); return filedata; }
6- /data/tmp/tmpEcgGxQ 32
7- /data/tmp/tmpEcgGxQm 36
Partager