我写入文件但更改未保存

I write to a file but the changes doesn't save

我正在编写一个函数来更改 csv 文件中的值,vs 调试器说它工作正常,但在程序退出后,我在文件中看到没有进行任何更改。你知道为什么吗?

int changeValue(int line, int row, char* text, char* fi_le)
/*line and row are the places in which the value is in the file and fi_le is
an address to the file*/
{
    int i = 1;
    char letter = ' ';
    FILE* file = fopen(fi_le, "r+");
    if (!(file))//checks that the file exists
    {
        printf("file r+ open in changeValue -- ERROR!");
        return 1;
    }
    while (i < line)//first line is number 1
    {
        letter = fgetc(file);
        if (letter == '\n')
        {
            i++;
        }
    }
    i = 0;
    while (i < row)//first row is number 0
    {
        letter = fgetc(file);
        if (letter == ',')
        {
            i++;
        }
    }
    for (i = 0; i < strlen(text) - 1; i++)//writes the new value in the old's value place
    {
        fputc(text[i], file);
    }
    fclose(file);
    return 0;
}

当文件使用 + 模式打开时,写入后读取,必须先调用文件定位函数。

从文件中读取一些字符后,您需要调用:fseek, fsetpos 或倒带功能。

要修复代码,请存储您从该文件中读取的总字符数,然后调用函数 fseek,其中第二个参数是计数,第三个参数是 SEEK_SET。