场合
我正在尝试以编程方式将一些代码写入文件然后进行编译。我需要能够在不替换整个文件的情况下添加代码。我在文件末尾有一个}
,我需要将其移除以便能够添加下一批代码,然后再读取}
。
我的代码目前是:
//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;
}
问题
我相信w
和a
标志会覆盖fseek()
的指针位置?所以我似乎无法覆盖文件末尾的}
。
是否有人知道我如何使用SEEK_END
从偏移中写字?
答案 0 :(得分:1)
不要对"w"
使用fopen
模式,而是使用"r+"
。
"r"
- 打开文件进行阅读。该文件必须存在。
"w"
- 创建空文件以进行编写。如果已经有一个同名文件
存在,其内容被删除,该文件被视为新的空文件。
"a"
- 附加到文件。编写操作,在数据末尾添加数据
文件。如果文件不存在,则创建该文件。
"r+"
- 打开文件以更新读写。该文件必须存在。
"w+"
- 为读取和写入创建一个空文件。
"a+"
- 打开一个文件进行阅读和追加。