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上親測,結果是和添加模式一樣,新寫入的內容總是被寫在文件的尾部
請問到底是怎麼回事呢?
程序結束後插入的字符才會被寫入文件中,運行過程中,被寫的數據存儲在緩存中,還沒有被寫入,你可以打斷點調試,看運行過程中,文件內容是否被更新