使用fopen_s()&文件写入文件fseek()与SEEK_END

时间:2017-03-09 13:41:15

标签: c io fopen fseek

场合

我正在尝试以编程方式将一些代码写入文件然后进行编译。我需要能够在不替换整个文件的情况下添加代码。我在文件末尾有一个},我需要将其移除以便能够添加下一批代码,然后再读取}

我的代码目前是:

    //Writes from an offset from the end of a file.
    static bool Write(const char *FilePath, const char *Text)
    {
        FILE *f;
        errno_t error;
        int seekerror;
        if (!(error = fopen_s(&f, FilePath, "w")))
        {
            //one byte offset from the end of the file.
            if (!(seekerror = fseek(f, -1, SEEK_END)))
            {
                fwrite(Text, sizeof(char), strlen(Text), f);
                fclose(f);
                return true;
            }
        }
        return false;
    }

问题

我相信wa标志会覆盖fseek()的指针位置?所以我似乎无法覆盖文件末尾的}

是否有人知道我如何使用SEEK_END从偏移中写字?

1 个答案:

答案 0 :(得分:1)

不要对"w"使用fopen模式,而是使用"r+"

"r" - 打开文件进行阅读。该文件必须存在。

"w" - 创建空文件以进行编写。如果已经有一个同名文件 存在,其内容被删除,该文件被视为新的空文件。

"a" - 附加到文件。编写操作,在数据末尾添加数据 文件。如果文件不存在,则创建该文件。

"r+" - 打开文件以更新读写。该文件必须存在。

"w+" - 为读取和写入创建一个空文件。

"a+" - 打开一个文件进行阅读和追加。