在C中遇到fseek()问题

时间:2013-10-15 15:52:13

标签: c fseek

所以,我在我的程序中有这个功能,应该保存一个" 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 个答案:

答案 0 :(得分:0)

你需要用r + b打开。

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

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

“r +” - 读取/更新:打开文件进行更新(包括输入和输出)。该文件必须存在。

 f = fopen("memory.txt","r+b");