2014-02-06 69 views
0

我正在嘗試完成這個奇怪的事情,它在文件中查找特定樣式的序列,檢查它是否是它正在查找的序列;然後,在確認後,它會回溯並將某些值更改爲期望值。這是什麼MSDN警告fopen(或fopen_s)試圖說?

它已經做了所有這些......我的問題是與此以下警告:

當指定"r+""w+",或"a+"訪問類型,閱讀和寫作都被允許(該文件說開放「更新」)。但是,從閱讀切換到書寫時,輸入操作必須遇到EOF標記。如果沒有EOF,則必須使用對文件定位功能的中間調用。文件定位功能是fsetpos,fseekrewind。當您從寫入切換到讀取時,您必須使用中間呼叫fflush或文件定位功能。

到底這是什麼警告想說什麼?順便說一句,我正在打電話給一個文件定位功能,正當我從閱讀切換到寫作時,使用fsetpos來尋找我存儲的位置。

如果我沒有?

寫入/讀取是否從最後一個位置指示符的位置繼續?

隨着代碼實例:

... 
getc(somefilepointer); 
fprintf_s(somefilepointer, "%X", 28); 
... 

... 
getc(somefilepointer); 
fgetpos(somefilepointer, &an_fpos_t); 
fsetpos(somefilepointer, &an_fpos_t); 
fprintf_s(somefilepointer, "%X", 28); 
... 

不是這些兩個相同的?

回答

0

我同意警告不完全清楚。但是,您需要小心,因爲它可能不會達到您的預期。從http://www.cplusplus.com/reference/cstdio/fopen/

「添加/更新:打開文件進行更新(包括輸入和輸出)與所有輸出操作在文件結束寫入數據定位操作(FSEEK,fsetpos,倒帶)影響下一個輸入操作,,但輸出操作將位置移回到文件末尾如果文件不存在,則創建文件。「

因此,如果文件已打開A +,您很好打印到文件的末尾。