永发信息网

关于fopen,fprintf,fclose的一个疑难杂症,百思不得其解,请高手指教!!!

答案:5  悬赏:0  手机版
解决时间 2021-03-21 16:08
代码如下:
我实验,当看到电脑变量hh显示到7391的突然拔掉电脑电源,让他断电,随后重新启动电脑,进去c:\\1.txt的文件看,发现数据之保存到6000多条,也就是少了1000多条的数据,请问代码要怎么改才能使他在断电后依然可以保存数据?
用fputs的方法也没用,用CreateFile的方式来实验也没用。
是不是微软自己本身的问题,希望高手指教。
还有另外在某些笔记本电脑上,一直频繁的if ((pfile=fopen("c:\\1.txt","a"))==NULL)
的话,到了10000万次的时候会出现找不到文件的返回值,打开失败,不知道是什么原因
同样求解。

C/C++ code
#include "stdafx.h"
#include
#include
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
FILE *pfile;
DWORD hh=0;
while (true)
{
if ((pfile=fopen("c:\\1.txt","a"))==NULL)
if ((pfile=fopen("c:\\1.txt","w"))==NULL)
return 0;
fprintf(pfile,"%u\n",hh);
fclose(pfile);
//TRACE("hh=%u\n",hh);
cout< hh++;
}
return 0;
}

尝试在fclose(pfile)前面加上fflush(pfile)了
还是没有效果
最佳答案
fprintf 是有缓冲的。也就是说,你调用fprintf的时候,只是写在缓冲中了,实际上写入硬盘是要等待缓冲满。可以用fflush(pfile)来把缓冲写入硬盘。
全部回答
跟操作系统有关。
最后调用一次fflash(). 试试。 再看看别人怎么说的。
可能是还没有把缓存写入硬盘你就断电了吧
在 fprintf(pfile,"%u\n",hh); 下面加条语句fflush(pfile); 虽然关闭文件的时候也会写入缓冲区,但有一定的延迟。 笔记本的原因,可能是文件描述符分配太频繁了,已经用尽,或者是这个文件上连接的文件描述符太多了,没有更多的位置。 关闭文件句柄后,一些善后处理,机器会在后台默默执行。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
膝盖疼如何锻炼,在户外运动中如何走路才能保
单选题下列句中标点使用正确的一项是A.老头儿
过点(2,-3),且平行于过两点(1,2),(-
腰围二尺三是多大码,二尺二腰围对应尺码
顶尖时尚烫染怎么去啊,有知道地址的么
he thought he was helping us with the work
苏东坡写月色的句子,苏轼把月光比作水的句子
招财宝1万块3个月收益是多少
商洛市商州区司法局大荆司法所地址在什么地方
电脑键盘失灵怎么办,笔记本一半自带键盘失灵
去香港旅游,除了要有港澳通行证,还需要一个
秀逗糖果吃起来是什么感觉的
单选题甜菜块根细胞液中的花青素使块根呈红色
哪些是中国国有媒体
广东江门创建文明城市的宣传标语
推荐资讯
New ideas sometimes have to wait for years
歌词有lalalalala的歌是什么
神州游戏本战神怎么样,神舟笔记本,战神系列
给死去的亲人灵前平时献什么东西好
描写童年生活诗词,古人有描写童年生活的诗歌
小红在算18-□÷2时弄错了运算顺序,先算了
柯南(工藤新一)和怪盗基德(黑羽快斗)见过面吗
百灵鸟地址有知道的么?有点事想过去
阅读下面古诗,完成第小题。(4分)王安石(
楚雄云星钢材有限公司在什么地方啊,我要过去
单选题Ilikemusic________it'srelaxing.A.be
浙江盐城属于哪个市
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?