2017-07-03 425 views
0

打開文件並立即關閉文件以刪除文件內容是否安全可接受。使用fopen(「file_name.dat」,「w」)刪除文件的內容

FILE *fp = fopen("file_name.dat","w"); 
fclose(fp); 

我嘗試它並且對我很好。 什麼是推薦方法? 請解釋一下這樣做的其他方式。 我想知道的truncate文件不重複是這種方式刪除文件真正的,因爲我猜它並沒有在任何書籍中讀取它

+4

的可能的複製[?如何截斷在C文件(https://stackoverflow.com/questions/873454/how截至一個文件在c) –

+0

注意:提供的答案只釋放到操作系統的存儲。內容仍在磁盤塊中。要真正刪除它,請以r/w模式打開文件,並用隨機數據覆蓋當前內容。 –

+0

@PaulOgilvie在fopen和fclose上完成我的工作之後,我使用常規編輯器打開file_name.txt,並刪除了其所有內容。請您提供關於將存儲釋放到操作系統的更多特定信息,並將數據保留在磁盤塊上。 – EsmaeelE

回答

3

有很多方法可以實現它。這完全取決於你的用例。他們很少如下: 1.正如你建議,但有幾項檢查

FILE *fp = fopen("file_name.dat","w"); /*fopen("file_name.dat","wb");*/ 
if(fp) 
{ 
    fclose(fp); 
} 

這是更好地檢查則fopen回報。

  1. 您可以完全刪除文件並再次打開文件。 https://www.tutorialspoint.com/c_standard_library/c_function_remove.htm
+0

謝謝。我使用tutoiralspoint刪除文件的方式。另外通過嘗試另一種方法,我打開一個閱讀fopen(「file.txt」,「r」)的文件並對其執行remove()操作。這種方式也適用於我。 – EsmaeelE

1

簡單的方法來清除文件的內容:

fclose(fopen("file.txt", "w")); 
+1

雖然它似乎很快的答案,但假設一個條件(我不是任何方式發生),fopen()無法打開文件並返回空文件指針http://en.cppreference.com/w/c/io/打開。我測試在fclose()中傳遞null ptr並給我seg錯誤。 – EsmaeelE