fread函数的返回值

Posted 为了维护世界和平_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fread函数的返回值相关的知识,希望对你有一定的参考价值。

使用fread返回值时需要注意,返回值不一定是读取到的字节数

函数原型

 //每次读取size个  读取nmemb次 
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
//每次写入size个  读取nmemb次
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

返回值
RETURN VALUE
On success, fread() and fwrite() return the number of items read or written. This number equals the number of bytes transferred only when size is 1.

解析:当size=1的时候,返回值为读取/写入的字节数,如果size不为1则返回值不为字节数。
返回读写的次数,如果size=1,则返回值为读到的字节数。

比较返回值与fread时间

int get_string()

    FILE *fp;
    fp = fopen("flow.txt","r");
    if(fp == NULL)
    
        printf("open flow error\\n");
        return -1;
    
    int ret=-1;
    char buf[512];

    struct timeval start, end;
    int interval;

    gettimeofday(&start, NULL);
    ret = fread(buf,1,26*5,fp);
    gettimeofday(&end, NULL);
    interval = 1000000*(end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec);
    printf("ret1=%d\\t",ret);

    printf("interval = %f\\n\\n", interval/1000.0);
    fseek(fp,0L,SEEK_SET);

    gettimeofday(&start, NULL);
    ret = fread(buf,26*5,1,fp);
    gettimeofday(&end, NULL);
    printf("ret2=%d\\t",ret);
    interval = 1000000*(end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec);

    printf("interval = %f\\n\\n", interval/1000.0);
    fseek(fp,0L,SEEK_SET);
    gettimeofday(&start, NULL);
    ret = fread(buf,1024,1,fp);
    gettimeofday(&end, NULL);

	printf("ret3=%d\\t",ret);
    interval = 1000000*(end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec);
    printf("interval = %f\\n\\n", interval/1000.0);
    fclose(fp);
    return 0;


打印输出

ret1=130	interval = 0.005000

ret2=1	interval = 0.001000

ret3=0	interval = 0.001000

ret1 返回130,代表真实读到的字节数,时间比较大
ret2 返回1,读取1次,每次读26*5个字节,读到多少字节不知道,时间0.001000
ret2 返回0,读取1次,每次读1024个字节 时间0.001000

以上是关于fread函数的返回值的主要内容,如果未能解决你的问题,请参考以下文章

fread一个图片文件 返回值怎么是5

读的是exe可执行文件 fread返回值是1024,但是buf里面怎么没有内容??

fwrite()函数和fread()函数分别有几个返回值?分别代表啥意思?(C语言)

fread与fread_s读取文件(二进制文件)

c语言中fread的用法

fread函数的用法