Вы превышаете выделенный буфер памяти:
char* path2=strdup("tests/");
strcat(path,"DICO_INSTRUCTION.txt");
Функция strdup
выделяет достаточно места для данной строки. Когда вы затем используете strcat
для добавления к этой строке, вы пишете за пределами выделенной памяти. Это вызывает неопределенное поведение , которое в этом случае проявляется как дамп ядра.
Либо передайте полную строку в strdup
:
char* path=strdup("tests/DICO_INSTRUCTION.txt");
Или, если вторая строка не является константой, или используйте asprintf
, чтобы создать строку и выделить для нее место:
char *filename = "DICO_INSTRUCTION.txt";
char *path;
asprintf(&path, "tests/%s", filename);
Ваша другая проблема здесь:
FILE* f1=open(nomFichierDico,"r");
Вы звоните open
, который возвращает числовой дескриптор файла вместо fopen
, который возвращает указатель на FILE
объект. Вы хотите:
FILE* f1=fopen(nomFichierDico,"r");