fclose函式的乙個注意點

2021-08-09 23:42:32 字數 469 閱讀 4317

fclose是乙個函式名,功能是關閉乙個流。注意:使用fclose()函式就可以把

緩衝區內最後剩餘的資料輸出到核心緩衝區,並釋放

檔案指標和有關的緩衝區。

函式原型:int fclose( file *fp );

返回值:如果流成功關閉,fclose 返回 0,否則返回eof(-1)。(如果流為null,而且程式可以繼續執行,fclose設定error number給einval,並返回eof。)

#include

#include

int main(int argc, const char *argv)

int i = 5;

while(i--)

fclose(fp);

return 0; }

這裡可以開啟新視窗進行cat test進行檢視,fprintf並不會向test立即列印,而是先列印到緩衝區,但關閉流檔案的時候才會寫入到檔案中。

乙個不當使用fclose引發的異常

最近伺服器上乙個後台傳輸檔案的服務,經常會報出異常來,只能強行終止並重啟。昨天剛好有空,現場抓了一下dump,再把程式扔到ida裡看了一下,很快就找出原因了,原來是呼叫fclose時出錯的。使用c的runtime函式進行檔案操作,也就是fopen,fread,ftell,fclose這些,本身這並沒...

C C 中列印函式的乙個小注意點

最近在開發乙個需求的時候,把老 中列印日誌的 拷貝直接拷貝過來。開發完成後測試人員說邏輯是正常的但是日誌有些奇怪。一 c c 中的列印問題 出現錯誤邏輯 如下 1 數值型別不匹配 snprintf szremark,sizeof szremark 1,資金賬戶 d llcuacctcode 其中ll...

使用列舉型別的乙個注意點

申明 本人菜鳥 以下總結屬於菜鳥級總結,大牛走開!shock shock 對於列舉型別,有一點需要非常注意 可以在其中定義陣列常量,但是最好不要在使用內部建構函式時使用這些陣列常量,因為此時這些陣列常量可能尚未初始化,估計是由於初始化順序的問題。對於以下程式,我在debug時發現,當這些列舉型別呼叫...