亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言子函數中fopen文件后必須要fclose嗎?

C語言子函數中fopen文件后必須要fclose嗎?

C
Smart貓小萌 2019-02-03 09:05:45
首先說明 fp不是外部變量,我是在做一個學生通訊錄,運用到子函數Open()打開文件,但是為什么這個子函數里用完fopen()后要fclose()一下?不是應該等所有操作,比如添加學生信息等操作完成保存時再關閉文件嗎?謝謝所有回答和要回答的人,因為只能給一個滿意,所以我認真考慮了下,給了一個我認為偏向我問題的人,lzdidiv你的回答也很棒!
查看完整描述

5 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

 是的,在使用完一個文件后應該關閉它,這應該成為一個習慣。如果不關閉文件,可能會丟失數據。因為在向文件寫數據時,實現將數據輸到緩沖區,待緩沖區充滿后才正式輸出給文件,如果當數據未充滿緩沖區而程序結束運行,就會將緩沖區中的數據丟失。用fclose函數關閉文件,他先將緩沖區中的數據輸出到磁盤文件然后才釋放文件指針變量,從而避免了數據丟失。
  關閉文件的格式是:
  fclose(文件指針);

查看完整回答
反對 回復 2019-03-14
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

fopen文件后不一定要fclose,是否fclose按自己需要。
例如,你先用讀的方法打開,看里面有多少個記錄。關閉文件,接下來動態分配數組,用來存放這些數據。再打開文件,把數據讀入動態數組。再關閉文件。再按添加的方法打開,添加新紀錄。再關閉文件。
上面,查看數據個數,動態分配,再讀數據,期間可以不關閉文件,而用 rewind(fp), 把文件指針放回開始。
上面,讀,添加寫,也可以不關閉文件,但在第一次打開時,你要按可讀可寫可添加方式打開,
讀寫期間文件指針移動要自己有目的地控制,技術要求高。
開一次,做單一操作,關一次,不容易出錯。



查看完整回答
反對 回復 2019-03-14
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

如果子函數中用完fopen()后不調用fclose()的話,估計你在子函數中的輸出就會有問題,或者說會丟失數據。你試試看(先屏蔽了這個fclose運行看結果),如果是這樣的話回復我告訴你原因。
其實剛剛看到一樓已經說出了本質了。只是不知道你的程序到底是怎樣的結構。

或者你

是不是說在子函數中不調用fclose()是不會影響最終的結果的的?如果是,哪你的問題中“但是為什么這個子函數里用完fopen()后要fclose()一下?”矛盾了,這說明在此子函數中不調用也行的。這只是看你在此處對打開的文件有沒有進行相關數據的操作,有沒有在此確保數據的完整輸出。因為stdio庫會對數據進行行緩沖,所以在必要的時候使用fclose()是有必要的。其實,當程序正常結束時,會自動對所有打開的文件流調用fclose()的。


查看完整回答
反對 回復 2019-03-14
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

為了安全起見,最好是寫完一次操作就fclose,而且這種操作在fclose前是保存在緩沖區中,當fclose后才會輸入到硬盤里,如果中途出了差錯,就會丟失操作。

查看完整回答
反對 回復 2019-03-14
  • 5 回答
  • 0 關注
  • 2383 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號