-1

所以,我的程序上有这个函数,它应该将“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");
    }
}
4

1 回答 1

0

你需要用 r+b 来打开。

如果你失败了文件不存在,那么你可以尝试使用“wb”

"w" - write:为输出操作创建一个空文件。如果已存在同名文件,则丢弃其内容并将该文件视为新的空文件。

"r+" - 读取/更新:打开一个文件进行更新(输入和输出)。该文件必须存在。

 f = fopen("memory.txt","r+b");
于 2013-10-15T16:04:28.493 回答