Я создаю создателя make-файла, но я застрял в этой ошибке на sprintf. Самое интересное, что у меня есть несколько sprintf перед тем, у кого ошибка, и они работают нормально.Ошибка сегментации с помощью sprintf
Вот код:
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);
}
}
Мое лучшее предположение заключается в том, что одна из строк не является нулевой. У меня была эта проблема пару раз, когда я впервые учился C. – forivall