2013-12-14 103 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

相關問題