Страницы

Поиск по вопросам

четверг, 20 декабря 2018 г.

FILE после открытия получает указатель 0x1

В main методе только вызов этой функции: add_entry("123.txt", "123", "some text"); После запуска создается файл и на строке fputs вылетает SIGSEGV. Через дебагер запускаю и узнаю, что у f указатель 0x1 после открытия файла.
void add_entry(char* file, char* id, char* entry) { FILE* f; if(f = fopen(file, "w+")!=NULL) { char* entry1 = calloc(strlen(entry)+strlen(id)+3, sizeof(char)); sprintf(entry1, "%s|%s
", id, entry); fputs(entry1, f); fclose(f); } }
В чем может быть проблема?


Ответ

Ну так
f = fopen(file, "w+")!=NULL
рассматривается компилятором как
f = (fopen(file, "w+")!=NULL)
так что все верно...
Пишите вот так:
(f = fopen(file, "w+"))!=NULL

Комментариев нет:

Отправить комментарий