2016-10-17 15 views
-1

我假設有一個填充數據的文件。fwrite的行爲

如果我打開"r+"模式和seek該文件以任何非EOF位置 和write一個或多個字符到這個文件,會產生什麼 標準的結果呢?

  • 在POSIX
  • 在GNU
  • 在DOS/Windows的?

會覆蓋或移動下列字符嗎?

如果人們需要的例子,這可能是這樣的文件:

文件a.tx

abcdefghijklmnopqrstuvwxyz 

C代碼片段:

FILE * f = fopen("a.tx", "r+"); 
fseek(f, 5, SEEK_SET); 
char * str = "12"; 
fwrite(str, 1, 2, f); // this is just an example 
+0

有一個downvote,爲什麼?我如何改進我的問題? – LittleByBlue

回答

0

這是一個非常非常基本的I/O行爲......並且與POSIX,GNU或DOS/Windows不相關,它只是標準的C.

它只會在位置5處寫12(從0開始計數),因此在fg之上寫12。請注意,這可能不會立即在文件中可見,因爲寫入可能會被緩存;如果您剛剛關閉或刷新文件,那麼數據肯定會寫入物理目標。

一般沒有(你的意思是將正確的?)在操作系統中提供,而你可以認爲這是一個基本的功能,將東西放到一個文件必要過多的操作被視爲一個基本的OS功能。

+0

a * shift *將會是'abcdefghi ...'** - > **'abcde12fghi ...'。這正是我想知道的,儘管我認爲這有一個標準。 – LittleByBlue

+0

這不是所謂的移位,而是插入。 –