grr.. encore un pb d'alloc :s (realloc & strncat)
Voici une fonction qui doit mettre en mémoire un fichier texte dans un char * :
Code:
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
|
#define fichierConf "config.php"
int main(int argc, char *argv[], char **envp){
char *confSrc="yep";
loadTextFile(fichierConf, &confSrc);
printf("%s",confSrc);
free(confSrc);
exit(0);
}
void loadTextFile(char *name, char **stockage){
#define tailleBuffer 512
char buffer[tailleBuffer];
FILE *file;
int NbLu;
int taille=strlen(*stockage);
printf("TAille initiale : %i\n",taille);
if((file=fopen(name, "r")) == NULL){
printf("Ouverture impossible du fichier %s :s\n",name);
exit(1);
}
while( (NbLu=fread(buffer, 1, tailleBuffer, file)) != 0){
taille+=NbLu;
*stockage=(char *) realloc(*stockage,taille+1);
strncat(*stockage,buffer,NbLu);
(*stockage)[taille-1]=0x0;
}
fclose(file);
} |
Quand mon char * de stockage (confSrc) est initialisé à 0x0, le prog marche mais j'ai un caractère bizarre qui s'insère au tout début. Par contre, quand il est déjà initialisé, le prog plante :(