Страницы

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

вторник, 31 декабря 2019 г.

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

#c #файлы #указатели


В 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\n", id, entry);
        fputs(entry1, f);
        fclose(f);
    }
}


В чем может быть проблема?
    


Ответы

Ответ 1



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

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

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