2012-10-26 53 views
-1

我需要讀取,然後寫入文件。我不想使用「r +」,因爲我完全覆蓋它。但我無法完全關閉該文件。如果我嘗試第二次打開文件,則應用程序崩潰(無法打開)。有誰知道如何完全關閉文件。完全關閉c中的文件

這是不是實際的代碼,只是一個是我想要做的總結:

FILE* f; 
fopen_s(&f, "test.txt", "r"); 
// read file and edit data 
fclose(f); 
f = 0; 
fopen_s(&f, "test.txt", "w"); 
fprintf(f, "%c", data); 
fclose(f); 
+0

我不清楚,爲什麼你不能關閉文件?你正在嘗試閱讀,然後從你離開閱讀的地方寫下來? – Mike

+1

什麼是'fopen_s()'?使用標準函數['fopen()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html)我會測試返回值以檢查操作是否成功......並且可能否則報告一個錯誤(函數['perror()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/perror.html))。 – pmg

+0

我認爲這是fopen的安全版本! – trumpetlicks

回答

2

fclose()關閉文件。它沒有一半關閉它。 「完全關閉」文件的概念不存在。文件打開或關閉。中間沒有。

儘管在您的代碼中您正在使用fopen_s()來打開文件。我不知道這個功能是什麼。我假設它的工作原理類似於fopen(),但它不是返回一個FILE指針,而是將其存儲在其參數中。

所以你的問題的答案是:「完全」關閉一個文件,使用fclose()。正如你已經做到的。這意味着你在別處存在的問題。

+0

http://stackoverflow.com/a/2575187/1633931 for fopen_s! –