Я кодирую алгоритм в C, но падаю в SEGFAULT. Это происходит, когда в функции я открываю файл с разрешением на добавление, что-то пишу, а затем закрываю файл. Ошибка сегментации происходит в строке fclose
. Вот пример.
FILE *fout;
if((fout = fopen("pippo.txt","a"))!=NULL){
fprintf(fout,"ciao\n");
fclose(fout);
};
- Файл
pippo.txt
существует * Указатель fout
не равен NULL - Если я пытаюсь просто открыть и закрыть файл (без
fprintf
) У меня нет ошибки сегментации - Если вместо добавления одного я использую разрешение "w", у меня не возникает ошибка sigfault, и она правильно записывает строку в файл.
Окно процессора при возникновении ошибки segf указывает на ошибку в функции SetfilePointer следующим образом:
SetFilePointer()
msvcrt!_lseeki64()
msvcrt!_write()
msvcrt!_write()
msvcrt!_flsbuf()
msvcrt!clearerr_s()
msvcrt!fclose()
в частности в SetfilePointer()
окно процессора:
0x00007ffae3468259 <+265>: movl $0x5,0x20(%rsp)
Я не понимаю, как решить эту ошибку. Кто-нибудь может мне помочь?