0

为什么我得到:

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

}

4

3 回答 3

2

因为您还没有阅读. fread()它返回NUMELEM,而不是 SIZE * NUMELEM

于 2013-07-11T06:49:40.133 回答
1

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

于 2013-07-11T07:07:01.067 回答
1

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

于 2013-07-11T06:52:45.403 回答