Ошибка сегментации после fprintf - PullRequest
0 голосов
/ 29 апреля 2020

Я кодирую алгоритм в 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)

Я не понимаю, как решить эту ошибку. Кто-нибудь может мне помочь?

...