2017-09-30 41 views
0
  1. 比方說,我有地方在我的程序打開文件與fopen然後我的程序做別的東西的功能(比如,試圖計算的東西)然後它崩潰,因爲一些空指針或堆棧溢出或分段錯誤等。有沒有可能會破壞/弄亂我打開的文件?能的fopen或fstream的等意外銷燬文件C/C++

  2. 如果我打開它寫作,該怎麼辦?那會更危險嗎?

+4

如果您打開一個文件進行寫入,並且給定的文件存在,那麼它的內容無論如何都會被銷燬。 –

+0

哪種語言,C或C++?他們是不同的語言。 C++有'ifstream',C沒有。 C++有流提取操作符,可以被重載以讀取自定義類的實例。 –

+0

打開文件內容破壞取決於您打開的方式。 w和w +並且內容消失了。 a,r + a +和內容仍然存在。 – user4581301

回答

2
  1. 如果你打開閱讀然後沒有,你不能損壞文件的文件。

  2. 如果你打開然後文件,總是可以離開文件中的某些損壞狀態。

+0

我想我可以非常依賴操作系統。但是,常識說你的答案是正確的。 – bolov

+0

呃,任何使您的數據易受攻擊的OS/FS無法使用。這不僅僅是常識,它還是必需的功能。 –

+0

至少在某些平臺和文件系統類型中,讀取文件將更新與文件關聯的一些元數據 - 特別是時間戳信息。所以讀取實際上涉及到寫入文件系統的某個部分。在Linux filesytems上,據我所知,所討論的元數據區域的大小是固定的,我認爲寫入失敗可能會導致文件或目錄有缺陷。無論如何,我從來沒有見過它發生。但我不認爲它可以安全地假設,在任何情況下,讀取過程中的失敗都不可能讓文件系統不快樂。 –