2012-10-26 19 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! –