【发布时间】:2013-06-25 18:40:18
【问题描述】:
我无法让这个 fseek() 函数在我的代码中工作。我写的文字只是没有从我指出的地方开始,我不知道为什么。它应该从 \n 开始写入,它只是覆盖所有文本文件。即使我用a 打开它,它也不会去我通过参数命令的地方。
fclose(file);
FILE *file_a = fopen("ex6.txt", "w");
fseek(file_a, -1, SEEK_END);
puts("Write text to add:");
while((letter = getchar()) != '\n')
{
fputc(letter, file_a);
};
发生了什么?为什么这不起作用?
【问题讨论】:
-
如果你想要文件的结尾,我希望你想将
0传递给 fseek。-1将在结束前 1 个字节。 -
您是否尝试在文件末尾附近插入而不是仅追加到末尾?
-
抱歉信息丢失。我正在尝试添加文本,让我们在结尾之前说 2 个字符,所以想象这是我的文件内容:“hello\0”我想插入信息“hell | o\0”,覆盖“o\0”和把我自己的测试放在那里,比如“是的”,最终的结果是:“是的,是的”。但这就像 fseek 不符合我的要求,即使我将引用放在正数中......
-
你的平台是什么?也许这可能是相关的? -> “允许库实现没有意义地支持 SEEK_END(因此,使用它的代码没有真正的标准可移植性)。” cplusplus.com/reference/cstdio/fseek
-
其实我是在“w+”模式下打开的,现在一切都好了。似乎它不支持简单的“w”或“a”。谢谢你们的回答,伙计们。这很有帮助。