C语言从文件中读取多个结构体数据到结构体中间失败
先写入525个TEST1结构体到文件中,中间没有失败。关闭文件后,在程序中打开文件并且计算文件大小,里面确实有525个结构体,然后fseek(pfile,0,0)后开始读...
先写入525个TEST1结构体到文件中,中间没有失败。关闭文件后,在程序中打开文件并且计算文件大小,里面确实有525个结构体,然后fseek(pfile,0,0)后开始读取文件,总是在中间失败,失败的地方也都是一处,例如错误在第13条数据,关掉文件 从新覆盖写入,依然没有错误,但是在执行读程序的时候还是在中间错误,我想问这样的问题该怎么解决呢,代码类似如下:写入文件的程序没有异常没有出错,之后检查文件的 大小也是写入525个结构体大小。排除写入错误。
文件能 正常打开,TEST1 temp;//结构体变量
fseek(pfile,0,0);
while(!feof(pfile)){
int res = fread(&temp,sizeof(TEST1),1,pfile);
if(res){
LOG_ERROR("读取文件错误");
}
else{
//把数据存储到hash表
。。。。。。。
} 展开
文件能 正常打开,TEST1 temp;//结构体变量
fseek(pfile,0,0);
while(!feof(pfile)){
int res = fread(&temp,sizeof(TEST1),1,pfile);
if(res){
LOG_ERROR("读取文件错误");
}
else{
//把数据存储到hash表
。。。。。。。
} 展开
1个回答
展开全部
先查看fread的帮助:
========================================
fread
语法:
#include <stdio.h>
int fread( void *buffer, size_t size, size_t num, FILE *stream );
函数fread()读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组.
数据来自给出的输入流. 函数的返回值是读取的内容数量...
使用feof()或ferror()判断到底发生哪个错误.
=======================================
看到了吗,可以使用feof()或ferror()判断到底发生哪个错误.
========================================
fread
语法:
#include <stdio.h>
int fread( void *buffer, size_t size, size_t num, FILE *stream );
函数fread()读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组.
数据来自给出的输入流. 函数的返回值是读取的内容数量...
使用feof()或ferror()判断到底发生哪个错误.
=======================================
看到了吗,可以使用feof()或ferror()判断到底发生哪个错误.
追问
在使用完ferror后 代码如下:
if(reserror = ferror(pfile)){//这里返回值为0
LOG_error();//
}
if(!res){//这里还是错和ferror相悖,上面忘了加!
LOG_ERROR("读取文件错误");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询