首先说明 fp不是外部变量,我是在做一个学生通讯录,运用到子函数Open()打开文件,但是为什么这个子函数里用完fopen()后要fclose()一下?不是应该等所有操作,比如添加学生信息等操作完成保存时再关闭文件吗?谢谢所有回答和要回答的人,因为只能给一个满意,所以我认真考虑了下,给了一个我认为偏向我问题的人,lzdidiv你的回答也很棒!
5 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
是的,在使用完一个文件后应该关闭它,这应该成为一个习惯。如果不关闭文件,可能会丢失数据。因为在向文件写数据时,实现将数据输到缓冲区,待缓冲区充满后才正式输出给文件,如果当数据未充满缓冲区而程序结束运行,就会将缓冲区中的数据丢失。用fclose函数关闭文件,他先将缓冲区中的数据输出到磁盘文件然后才释放文件指针变量,从而避免了数据丢失。
关闭文件的格式是:
fclose(文件指针);
慕桂英3389331
TA贡献2036条经验 获得超8个赞
如果子函数中用完fopen()后不调用fclose()的话,估计你在子函数中的输出就会有问题,或者说会丢失数据。你试试看(先屏蔽了这个fclose运行看结果),如果是这样的话回复我告诉你原因。
其实刚刚看到一楼已经说出了本质了。只是不知道你的程序到底是怎样的结构。
或者你
是不是说在子函数中不调用fclose()是不会影响最终的结果的的?如果是,哪你的问题中“但是为什么这个子函数里用完fopen()后要fclose()一下?”矛盾了,这说明在此子函数中不调用也行的。这只是看你在此处对打开的文件有没有进行相关数据的操作,有没有在此确保数据的完整输出。因为stdio库会对数据进行行缓冲,所以在必要的时候使用fclose()是有必要的。其实,当程序正常结束时,会自动对所有打开的文件流调用fclose()的。
- 5 回答
- 0 关注
- 2250 浏览
添加回答
举报
0/150
提交
取消