2013-12-14 156 views
0

如何使fseekfwrite一起使用时不覆盖给定位置的内容?如何使用fseek和fwrite将文本插入到文件中

我打开一个文件,

file = fopen(filename, "r+"); 

然后用

fseek (file, pos, SEEK_SET); 

去,我需要的位置,使用

fwrite(text, 1, text_size, file); 

写入数据。

例如:

说,我要加 '7' 在第3位:

abcdef 

我想这是

abc7def 
+0

'fseek'不写任何东西 - 你能澄清你的问题吗? –

+0

对不起,澄清... – SkyRipper

+0

添加示例... – SkyRipper

回答

0

您不能插入到文件中。实现这一目标的唯一方法是将文件的其余部分保存到某个地方,编写新的东西,然后将文件的其余部分从保存的位置附加。但是你必须在你想插入的文件之后重新写入文件的整个部分。

+0

不,他们将文件加载到内存中,处理内存中的编辑,然后在选择保存时将(整个文件!)写回。 –

+0

有什么方法可以用任何语言甚至是装配?我的文件将是数百兆字节... – SkyRipper

0

FSEEK不会覆盖任何东西。如果您在fseek之后使用fwrite,fputs,fputc或类似函数,则可以覆盖您寻求的位置。

+0

很正确,如何避免这种情况? – SkyRipper

+0

你想避免什么?在fseek之后覆盖?然后不要使用写入该文件的函数。如果你的问题是:我如何使任何写入函数写入文件的结尾而不是fseek()编辑的位置 - 使用fseek(fp,0,SEEK_END)。 –

+0

请看上面的例子 – SkyRipper

相关问题