为什么fread()在文件读取期间失败?

时间:2013-07-11 06:47:35

标签: c

为什么我要来:

  

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;
    }

}

3 个答案:

答案 0 :(得分:2)

因为您尚未阅读fread()的{​​{3}}。它返回NUMELEM SIZE * NUMELEM

答案 1 :(得分:1)

不要将fread()返回值与请求的大小进行比较。有时请求文件中没有的数据大小。并且不与SIZE * NUMELEM比较,fread总是返回成功读取的项目数。有关更多信息,请阅读fread()手册页

答案 2 :(得分:1)

如果文件中存储的字符数较少怎么办? fread() 返回从文件和代码中读取的字符数 ,读取 个字符的数量!= number文件中的字符