• fread函数


    收藏

    719有用+1 已投票

     

    fread

    编辑 锁定
    fread是一个函数。从一个文件流中读数据,最多读取count个项,每个项size个字节,如果调用成功返回实际读取到的项个数(小于或等于count),如果不成功或读到文件末尾返回 0。
    中文名
    外文名
    fread
    属    性
    函数
    参    数
    buffer
    函数原型
    size_t fread
    所属库
    #include <stdio.h>

    fread简介

    编辑

    fread函数原型

    size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

    fread参 数

    buffer
    用于接收数据的内存地址
    size
    要读的每个数据项的字节数,单位是字节
    count
    要读count个数据项,每个数据项size个字节.
    stream
    输入流

    fread返回值

    返回真实写入的项数,若大于count则意味着产生了错误。另外,产生错误后,文件位置指示器是无法确定的。若其他stream或buffer为空指针,或在unicode模式中写入的字节数为奇数,此函数设置errno为EINVAL以及返回0.
     

    fread程序例

    编辑

    freadC语言

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #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;
    }

    freadMSDN示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include<stdio.h>
    int main(void)
    {
        FILE*stream;
        charlist[30];
        inti,numread,numwritten;/*Open file in text mode:*/
        if((stream=fopen("fread.out","w+t"))!=NULL)
        {
            for(i=0;i<25;i++)
                list[i]=(char)('z'-i); /*Write 25 characters to stream*/
            numwritten=fwrite(list,sizeof(char),25,stream);
            printf("Wrote %d items ",numwritten);
            fclose(stream);
        }
        else
            printf("Problem opening the file ");
             
        if((stream=fopen("fread.out","r+t"))!=NULL)
        {/*Attempt to read in 25 characters*/
            numread=fread(list,sizeof(char),25,stream);
            printf("Number of items read=%d ",numread);
            printf("Contents of buffer=%.25s ",list);
            fclose(stream);
        }
        else
            printf("File could not be opened ");
    }

    freadPHP

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
        $handle=fopen("test.txt","rb");
        $contents="";
        while(!feof($handle)){
            $contents.=fread($handle,8192);
        }
        fclose($handle);
    ?>

    freadPHP函数

    编辑
    (PHP 4, PHP 5)
    fread -- 读取文件(可安全用于二进制文件)

    fread说明

    stringfread( int handle, int length )
    fread()文件指针handle读取最多 length 个字节。 该函数在读取完 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时就会停止读取文件,视乎先碰到哪种情况。

    fread注意

    在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fopen() 函数的 mode 参数要加上 'b'。
    当从网络流或者管道读取时,例如在读取从远程文件或popen()以及proc_open()的返回时,读取会在一个包可用之后停止。这意味着你应该如下例所示将数据收集起来合并成大块。
    如果你只是想将一个文件的内容读入到一个字符串中,用file_get_contents(),它的性能比上面的代码好得多。

    freadMATLAB函数

    编辑

    fread功能:

    fread函数可从文件中读取二进制数据

    fread语法:

    A = fread(fid, count)
    A = fread(fid, count, precision)
    其中fid为指针所指文件中的当前位置,count指读取的数据个数, precision表示以什么格式的数据类型读取数据。

    fread例子:

    fid = fopen('alphabet.txt', 'r');
      c = fread(fid, 5)'
      c =
      65 66 67 68 69
      fclose(fid);
    程序说明:alphabet文件中按顺序存储着26个英文字母,读取文件之前要先打开文件,由于未指定读取数据的类型,所以程序指定默认类型为无符号字符型即uchar,65、66、67、68、69代表A、B、C、D、E,文件用完还要记得关闭文件,以便释放指针。
    fid = fopen('alphabet.txt', 'r');
      c = fread(fid, '*char')'
      c =
      ABCDEFGHIJKLMNOPQRSTUVWXYZ
      fclose(fid);
    程序说明:此程序未指定数据个数,而默认为全部数据,所以显示了文件中的所有数据。
    一个嵌入式工程师,知道的必须很多
  • 相关阅读:
    项目管理系列(其他):国际工程承包项目风险识别与分析
    公司注册之简化版
    公司注册之百度百科
    有效投标不足三家不应是重新招标的必要条件
    CPU频率
    集成电路
    晶体管
    Oracle问题之ORA-01609、ORA-00362
    Oracle问题之ORA-12560TNS:协议适配器错误
    Oracle问题之字符集问题,登陆sqlplus出现问号
  • 原文地址:https://www.cnblogs.com/AAA-li/p/5891858.html
Copyright © 2020-2023  润新知