Возникли проблемы с 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");