Возникли проблемы с fseek() в C

Итак, в моей программе есть эта функция, которая должна сохранять структуру "car_str" в нужном месте в файле, указанном в качестве параметра. Но когда я запускаю его, он снова и снова перезаписывает первый слот, как будто fseek не указывает на указанное место в файле. Есть ли проблемы с моим кодом? Я думаю, что это может быть связано с умножением, так как без него программа работает хорошо, но я не могу указать место, которое хочу.

void save(int car_nbr)
{
    FILE *f;

    f = fopen("memory.txt","wb");
    if (!f)
    {
        printf ("error");
    }
    else
    {
        car_nbr--;
        fseek(f, sizeof(struct car_str)*car_nbr, SEEK_SET);
        fwrite(&car,sizeof(struct car_str),1,f);
        rewind(f);
        fclose(f);
        printf("\nsaved");
    }
}

1 ответ

Вам нужно открыть с R + B.

если вы потерпели неудачу, чем файл не существует, так что вы можете попробовать использовать "ВБ"

"w" - запись: создать пустой файл для операций вывода. Если файл с таким именем уже существует, его содержимое отбрасывается, и файл обрабатывается как новый пустой файл.

"r +" - чтение / обновление: открыть файл для обновления (как для ввода, так и для вывода). Файл должен существовать.

 f = fopen("memory.txt","r+b");
Другие вопросы по тегам