程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c-當以更新模式打開流的時候到底能否通過fseek定位來改變寫入的位置?

c-當以更新模式打開流的時候到底能否通過fseek定位來改變寫入的位置?

編輯:編程綜合問答
當以更新模式打開流的時候到底能否通過fseek定位來改變寫入的位置?

c中以"a+"或者"ab+"模式打開一個文件,然後在文件中寫入一些內容比如abcd,然後用fseek函數重新定位在流中的位置,fseek(fp, 2, SEEK_SET);再次寫入內容,比如字母z,會不會在這行abcd中插入z這個字母,或是把其中的字母改寫為z

我查閱了msdn關於fseek的說明,上面表明在更新模式下是可以通過fseek改變寫入位置的:

The fseek and _fseeki64 functions moves the file pointer (if any) associated with stream to a new location that is offset bytes from origin. The next operation on the stream takes place at the new location. On a stream open for update, the next operation can be either a read or a write.

但是我在VS2012上親測,結果是和添加模式一樣,新寫入的內容總是被寫在文件的尾部

請問到底是怎麼回事呢?

最佳回答:


程序結束後插入的字符才會被寫入文件中,運行過程中,被寫的數據存儲在緩存中,還沒有被寫入,你可以打斷點調試,看運行過程中,文件內容是否被更新

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved