Je crée un makefile creator, mais je suis coincé dans cette erreur sur sprintf, le plus curieux, c'est que j'ai plusieurs sprintf avant celui avec l'erreur et ils fonctionnent bien.Segmentation Fault avec sprintf
Voici le code:
if (WIFEXITED(stat) ){
if (WEXITSTATUS(stat)) {
if (cFiles == 0 && cFolders == 0) {
Crear(path);
}
cFolders = 1;
TEMP = malloc(sizeof(char)*(strlen(direntp->d_name) + 25));
if (TEMP == NULL) {
perror("Malloc Error: ");
exit(1);
}
if (sprintf(TEMP, "\n%s/%s.a: force\n\t$(MAKE) -C %s\n",direntp->d_name, direntp->d_name, direntp->d_name) < 0) {
perror("Sprintf Error: ");
exit(1);
}
write(STDOUT_FILENO,TEMP,strlen(TEMP));
f.name = malloc(sizeof(char)*(strlen(direntp->d_name)*2 + 3));
if (f.name = NULL) {
perror("Malloc Error: ");
exit(1);
}
//This is the one with the problem!!!
if (sprintf(f.name, "%s/%s.a", direntp->d_name, direntp->d_name) < 0) {
perror("Sprintf Error: ");
exit(1);
}
l = AddToList(l,&f);
}
}
Ma meilleure estimation est que l'une des chaînes n'est pas terminée par un caractère nul. J'ai eu ce problème quelques fois quand j'ai commencé à apprendre C. – forivall