关于fread和fwrite的问题,挺着急的,大家帮下忙
同志们好:
我现在要做一个存储信息的文件,然后读出来,按二进制读写,但是有个奇怪的问题,请大家帮我解决一下。写文件的日志没有出现错误,看文件记录的开头和结尾的消息也对,但是在读的时候,总是读到某一条的时候read出来的length总是0,feeoer没有错误,也不是文件尾,但是就是读不出来了,总是0……下边是我的代码,请大家帮我想一下,我应该没有弄错阿。
这里是写的地方:
我先把buffer的长度作为int写到文件中,然后接着写buffer
fp = fopen(filepath,"w");//这个是打开文件
//这个是写文件函数
int serialSize = buffer的长度;
fwrite(&serialSize,sizeof( int ), 1,fp);
writeNum = fwrite(buffer,sizeof( char ), serialSize,fp);
if(writeNum == 0)
{
}
else
{
}
//
fp = fopen(filepath,"r");//这个是打开读的时候的文件
//这个是读文件函数
int serialSize = 0;
fread(&serialSize,sizeof( int ), 1,fp);
readNum = fread(buffer,sizeof( char ), serialSize,fp);
if(readNum == 0)
{
}
else
{
}
//
读文件和写文件都是循环来用的,知道读写完关闭文件。
现在问题就是在读的时候循环执行到fread(&serialSize,sizeof( int ), 1,fp)的时候serialSize到某一条就会为0……
我试着写了几个文件,每个文件出现问题的位置不一样,有的是在90条,有的在100条等等。
但是单个文件出现问题的点总是一样的,如果说我写文件的时候出现错误的话,我在每个fwrite我的buffer的时候都会判断writenum是否为0,但是从来没有报错,请各位达人帮忙想想看。谢谢大家了,我挺着急的。