为什么我要来:
fread()失败
我在VS 2010中运行此代码
#include<stdio.h>
#include<string.h>
#define SIZE 1
#define NUMELEM 5
int main(void)
{
FILE* fd = NULL;
char buff[100];
memset(buff,0,sizeof(buff));
printf(" Starting to open");
fd = fopen("test","r+");
if(NULL == fd)
{
printf("\n fopen() Error!!!\n");
return 1;
}
printf("\n File opened successfully through fopen()\n");
if(SIZE*NUMELEM != fread(buff,SIZE,NUMELEM,fd))
{
printf("\n fread() failed\n");
return 1;
}
}
答案 0 :(得分:2)
因为您尚未阅读fread()
的{{3}}。它返回NUMELEM
,不 SIZE * NUMELEM
。
答案 1 :(得分:1)
不要将fread()返回值与请求的大小进行比较。有时请求文件中没有的数据大小。并且不与SIZE * NUMELEM比较,fread总是返回成功读取的项目数。有关更多信息,请阅读fread()手册页
答案 2 :(得分:1)
如果文件中存储的字符数较少怎么办?
fread()
返回从文件和代码中读取的字符数 ,读取 个字符的数量!= number文件中的字符 。