所以,我在我的程序中有这个功能,应该保存一个" 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");
}
}
答案 0 :(得分:0)
你需要用r + b打开。
如果您失败而不是文件不存在,那么您可以尝试使用“wb”
“w” - 写:为输出操作创建一个空文件。如果已存在同名文件,则会丢弃其内容,并将该文件视为新的空文件。
“r +” - 读取/更新:打开文件进行更新(包括输入和输出)。该文件必须存在。
f = fopen("memory.txt","r+b");