C程序里 文件读写的问题
在我的程序里会写文件,为了保护文件不因为意外的原因被损毁,我定时备份一份。代码大致是这样的:
void SaveFile()
{
static int counter = 0;
------------------把内存里的东西写进文件---------------------------------------
//打开待写的文件,
FILE * fp = fopen( filename, "w" );
//向文件里写
fprintf(fp, ……)
//关闭文件
fclose(fp)
------------------把内存里的东西写进备份文件----------------------------------
if(++counter%5 == 0)
{
//打开备份文件,
FILE * fp = fopen( bakfilename, "w" );
//向备份文件里写
fprintf(fp, ……)
//关闭备份文件
fclose(fp)
}
}
SaveFile函数200毫秒被调用一次。每200毫秒,程序就会把内存的内容写入文件,每1秒钟,把内存的内容向备份文件里写一份。
我觉得按照我上面的代码逻辑,任何时候只有一个文件在操作,这样即使程序意外死掉,或者机器掉电,那么也只有一个文件被损坏,另一个文件是好的。
可事实上,在按下reset键后,发现2个文件都被损坏了。
不知道为什么啊!请高人指教!
void SaveFile()
{
static int counter = 0;
------------------把内存里的东西写进文件---------------------------------------
//打开待写的文件,
FILE * fp = fopen( filename, "w" );
//向文件里写
fprintf(fp, ……)
//关闭文件
fclose(fp)
------------------把内存里的东西写进备份文件----------------------------------
if(++counter%5 == 0)
{
//打开备份文件,
FILE * fp = fopen( bakfilename, "w" );
//向备份文件里写
fprintf(fp, ……)
//关闭备份文件
fclose(fp)
}
}
SaveFile函数200毫秒被调用一次。每200毫秒,程序就会把内存的内容写入文件,每1秒钟,把内存的内容向备份文件里写一份。
我觉得按照我上面的代码逻辑,任何时候只有一个文件在操作,这样即使程序意外死掉,或者机器掉电,那么也只有一个文件被损坏,另一个文件是好的。
可事实上,在按下reset键后,发现2个文件都被损坏了。
不知道为什么啊!请高人指教!
...全文
相关推荐
C语言实现按行读写文件
主要为大家详细介绍了C语言实现按行读写文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
c语言文件的读写操作
c语言程序实现文件的简单的读写操作 、
c语言文件读写示例(c语言文件操作)
主要介绍了c语言文件读写示例(c语言文件操作),需要的朋友可以参考下
纯C语言读写ini配置文件
使用纯C语言写的读写ini格式配置文件示例,VC6编译,代码和注释详细。封装合理,可快速集成到其它项目。
C语言实现二进制文件读写详解
文章先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。


