zoukankan      html  css  js  c++  java
  • fread

    从给定输入流stream读取最多count个对象到数组buffer中(相当于以对每个对象调用count次fgetc),把buffer当作unsigned char数组并顺序保存结果。流的文件位置指示器前进读取的字节数。
    若出现错误,则流的文件位置指示器的位置不确定。若没有完整地读入最后一个元素,则其值不确定。
    定义于头文件<stdio.h>
    size_t freadvoid *buffer, size_t size, size_t count, FILE *stream );//C99前
    size_t freadvoid *restrict buffer, size_t size, size_t count, FILE *restrict stream );//C99起
     
    //size_t是在基于无符号整数memsize类型的C / C + +的标准库中定义的。C语言中,此类型位于头文件stddef.h中,而在C++中,则位于cstddef中。
    //经测试发现,在32位系统中size_t是4字节的,而在64位系统中,size_t是8字节的,这样利用该类型可以增强程序的可移植性。

    参数

    buffer 指向要读取的数组中首个对象的指针
    size 每个对象的大小(单位是字节)
    count 要读取的对象个数
    stream 输入流

    返回值

    返回成功读取的对象个数,若出现错误或到达文件末尾,则可能小于count。
    若size或count为零,则fread返回零且不进行其他动作。
    fread不区分文件尾和错误,因此调用者必须用feofferror才能判断发生了什么。
    示例代码:
    #include <stdio.h>
    #include <string.h>
     
    int main(void)
    {
        FILE *stream;
     
        char msg[]="this is a test";
     
        char buf[20];
     
        if((stream=fopen("DUMMY.FIL","w+"))==NULL)
        {
            fprintf(stderr,"Can not open output file. ");
            return 0;
        }
     
     
        /*write some data to the file*/
        fwrite(msg,1,strlen(msg)+1,stream);
     
        /*sizeof(char)=1 seek to the beginning of the file*/
        fseek(stream,0,SEEK_SET);
     
        /*read the data and display it*/
        fread(buf,1,strlen(msg)+1,stream);
     
        printf("%s ",buf);
     
        fclose(stream);
     
        return 0;
     
    }
     
    /*
    int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。
    如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。
    函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
    fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。
     
    */
  • 相关阅读:
    机器学习漫游(1) 基本设定
    win10+anaconda+cuda配置dlib,使用GPU对dlib的深度学习算法进行加速(以人脸检测为例)
    基于SignalR的站点有连接数限制问题及解决方案
    如何删除EF4.0以上的版本
    从JDBC到hibernate再到mybatis之路
    ORA-01747: user.table.column, table.column 或列说明无效 异常解决方法总结
    MyBatis Oracle 批量新增、更新和删除
    IDEA 方法注释模板和类注释模板
    MyBatis 使用注解方式实现一对多
    (转)GPT磁盘与MBR磁盘区别
  • 原文地址:https://www.cnblogs.com/ruigelwang/p/12724435.html
Copyright © 2011-2022 走看看