精华内容
下载资源
问答
  • C++中fread函数和fwrite函数

    千次阅读 2015-03-16 21:10:38
    2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。 (2)size:要读写...

     

    1.函数功能

    用来读写一个数据块。

    2.一般调用形式

    fread(buffer,size,count,fp);

    fwrite(buffer,size,count,fp);

    3.说明

    (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

    (2)size:要读写的字节数;

    (3)count:要进行读写多少个size字节的数据项;

    (4)fp:文件型指针。

    4.例:

    1.fread(&id,1,10,f)就是把f里面的值读到id里面,每次读1个字节,一共读10次,或者把id里面的值都读完,不到10次也会停止。

    2.fwrite(&id,1,10,f)就是把id里面的值读到f里面,每次读1个字节,一共读10次或是fread(&id,10,1,f)就是把id里面的值读到里面,每次读10个字节,一共读1次。

     

     

     

     

     

     

     

    fread函数和fwrite函数

    1.函数功能

      用来读写一个数据块。

    2.一般调用形式

      fread(buffer,size,count,fp);

      fwrite(buffer,size,count,fp);

    3.说明

      (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

      (2)size:要读写的字节数;

      (3)count:要进行读写多少个size字节的数据项;

      (4)fp:文件型指针。

     注意:1 完成次写操(fwrite())作后必须关闭流(fclose());

               2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;

               3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。

     

    fseek函数

    重定位流上的文件指针

    int fseek(FILE *stream, long offset, int fromwhere);

    函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。成功,返回0,否则返回其他值。fseek position the file position pointer for the file referenced by stream to the byte location calculated by offset.

     

     

     

    文件使用之后一定要关闭,否则将不能正确显示内容.fwrite:读入两个学生信息然后用fwrite存入文件

    fread:用fread从文件中读出学生信息。

    展开全文
  • Matlab中fread函数用法

    千次阅读 2020-12-22 09:44:27
    fread函数读取二进制文件中的数据。 语法 A = fread(fileID) A = fread(fileID,sizeA) A = fread(fileID,sizeA,precision) A = fread(fileID,sizeA,precision,skip) A = fread(fileID,sizeA,precision,skip,...

    目录

    语法

    说明

    示例

    读取整个文件的uint8数据

    读取包含双精度数据的整个文件

    读取文本文件

    读取文件中的选定行或列

    读取二进制编码的十进制值的位数


            fread函数读取二进制文件中的数据。

    语法

    A = fread(fileID)
    
    A = fread(fileID,sizeA)
    
    A = fread(fileID,sizeA,precision)
    
    A = fread(fileID,sizeA,precision,skip)
    
    A = fread(fileID,sizeA,precision,skip,machinefmt)
    
    [A,count] = fread(___)

    说明

    • A = fread(fileID) 将打开的二进制文件中的数据读取到列向量A中,并将文件指针定位在文件结尾标记处。该二进制文件由文件标识符fileID指示。使用fopen可打开文件并获取fileID值。读取文件后,请调用fclose(fileID) 来关闭文件。
    • A = fread(fileID,sizeA) 将文件数据读取到维度为sizeA的数组A中,并将文件指针定位到最后读取的值之后。fread按列顺序填充 A
    • A = fread(fileID,sizeA, precision ) 根据precision描述的格式和大小解释文件中的值。sizeA参数为可选参数。
    • A = fread(fileID,sizeA, precision ,skip) 在读取文件中的每个值之后将跳过 skip指定的字节或位数。sizeA参数为可选参数。
    • A = fread(fileID,sizeA, precision ,skip,machinefmt) 另外指定在文件中读取字节或位时的顺序。sizeAskip参数是可选的。
    • [A,count] = fread(___) 还将返回 fread 读取到 A 中的字符数。可以将此语法与前面语法中的任何输入参数结合使用。

    示例

    读取整个文件的uint8数据

            将一个九元素向量写入到示例文件nine.bin 中。

    fileID = fopen('nine.bin','w');
    fwrite(fileID,[1:9]);
    fclose(fileID);

            将文件中的所有数据读取到double类的向量中。默认情况下,fread 一次读取文件中的1个字节,将每个字节解释为一个8位无符号整数 (uint8),并返回一个double数组。

    fileID = fopen('nine.bin');
    A = fread(fileID)
    A = 9×1
    
         1
         2
         3
         4
         5
         6
         7
         8
         9

      fread返回一个列向量,文件中的每个字节对应一个元素。查看 A 的相关信息。

    whos A
      Name      Size            Bytes  Class     Attributes
    
      A         9x1                72  double   

            关闭文件。

    fclose(fileID);

    读取包含双精度数据的整个文件

            创建一个名为 doubledata.bin 并且包含九个双精度值的文件。

    fileID = fopen('doubledata.bin','w');
    fwrite(fileID,magic(3),'double');
    fclose(fileID);

            打开文件 doubledata.bin,并将文件中的数据读取到一个 3×3 数组 A。指定源数据为 double 类。

    fileID = fopen('doubledata.bin');
    A = fread(fileID,[3 3],'double')
    A = 3×3
    
         8     1     6
         3     5     7
         4     9     2

            关闭文件。

    fclose(fileID);

    读取文本文件

            读取文件 fread.m 的内容。转置输出数组 A 以便其为行向量。

    fileID = fopen('fread.m');
    A = fread(fileID,'*char')';
    fclose(fileID);

      fread 返回字符数组 A

    读取文件中的选定行或列

            创建一个名为 nine.bin 并且包含1 - 9中的值的文件。以uint16值形式写入数据。

    fileID = fopen('nine.bin','w');
    fwrite(fileID,[1:9],'uint16');
    fclose(fileID);

            将前六个值读取到一个 3×2 数组中。指定源数据为 uint16 类。

    fileID = fopen('nine.bin');
    A = fread(fileID,[3,2],'uint16')
    A = 3×2
    
         1     4
         2     5
         3     6
    

      fread返回使用文件nine.bin中的前六个值逐列填充的一个数组。

            返回到文件的开头。

    frewind(fileID)

            一次读取两个值,并在读取下一个值之前跳过一个值。使用 precision 值 '2*uint16' 指定此格式。因为数据为 uint16 类,所以一个值由 2 个字节表示。因此,将 skip 参数指定为 2

    precision = '2*uint16';
    skip = 2;
    B = fread(fileID,[2,3],precision,skip)
    B = 2×3
    
         1     4     7
         2     5     8
    

       fread 返回使用 nine.bin 中的值逐列填充的一个 2×3 数组。

            关闭文件。

    fclose(fileID);

    读取二进制编码的十进制值的位数

            创建一个包含二进制编码小数 (BCD) 值的文件。

    str = ['AB'; 'CD'; 'EF'; 'FA'];
    
    fileID = fopen('bcd.bin','w');
    fwrite(fileID,hex2dec(str),'ubit8');
    fclose(fileID);

            一次读取 1 个字节。

    fileID = fopen('bcd.bin');
    onebyte = fread(fileID,4,'*ubit8');

            显示 BCD 值。

    disp(dec2hex(onebyte))
    AB
    CD
    EF
    FA

            使用frewind返回到文件的开头。如果在 little-endian 系统上一次读取 4 位数,则结果将以错误顺序显示。

    frewind(fileID)
    
    err = fread(fileID,8,'*ubit4');
    disp(dec2hex(err))
    B
    A
    D
    C
    F
    E
    A
    F

            使用 frewind 返回到文件的开头。与之前一样一次读取数据的 4 位,但指定 big-endian 排序以显示正确的结果。

    frewind(fileID)
    
    correct = fread(fileID,8,'*ubit4','ieee-be');
    disp(dec2hex(correct))
    A
    B
    C
    D
    E
    F
    F
    A

            关闭文件。

    fclose(fileID);

            已打开二进制文件的文件标识符,指定为整数。使用fread读取文件之前,必须使用fopen打开文件并获取fileID

    sizeA 输入的格式输出数组 A 的维度。
    Inf列向量,其中的每个元素包含文件中的一个值。
    n具有 n 个元素的列向量。
    [m,n]m×n 矩阵,按列顺序填充。n可以为 Inf,但m不能为该值。

            要读取的值的类和大小(以位为单位),以下列形式之一指定为字符向量或字符串标量。(可选)输入可指定输出矩阵 A 的类。

    precision 输入的格式说明
    source输入值属于source指定的类。输出矩阵A为类 double
    示例:'int16'
    source=>output输入值属于 source 指定的类。输出矩阵 A 的类由 output 指定。
    示例:'int8=>char'
    *source输入值和输出矩阵 A 属于 source 指定的类。对于 bitn 或 ubitn 精度,输出具有可包含输入的最小类。
    例如:'*ubit18'
    这等同于 'ubit18=>uint32'

    N*source 或
    N*source=>output

    在跳过 skip 参数指定的字节数之前读取 N 值。
    例如:'4*int8'

            下表显示了 source 和 output 的可能值。

    值类型精度位(字节)

    无符号整数

    'uint'

    32 (4)

    'uint8'

    8 (1)

    'uint16'

    16 (2)

    'uint32'

    32 (4)

    'uint64'

    64 (8)

    'uchar'

    8 (1)

    'unsigned char'

    8 (1)

    'ushort'

    16 (2)

    'ulong'

    32 (4)

    'ubitn'

    1 ≤ n ≤ 64

    有符号整数

    'int'

    32 (4)

    'int8'

    8 (1)

    'int16'

    16 (2)

    'int32'

    32 (4)

    'int64'

    64 (8)

    'integer*1'

    8 (1)

    'integer*2'

    16 (2)

    'integer*4'

    32 (4)

    'integer*8'

    64 (8)

    'schar'

    8 (1)

    'signed char'

    8 (1)

    'short'

    16 (2)

    'long'

    32 (4)

    'bitn'

    1 ≤ n ≤ 64

    浮点数

    'single'

    32 (4)

    'double'

    64 (8)

    'float'

    32 (4)

    'float32'

    32 (4)

    'float64'

    64 (8)

    'real*4'

    32 (4)

    'real*8'

    64 (8)

    字符

    'char*1'

    8 (1)

    'char'

    依赖于与文件关联的编码方案。使用fopen设置编码。

            对于source的大多数值,如果 fread 在读取完整值之前达到文件的末尾,则不会返回最终值的结果。但是,如果source是bitn或ubitn,则fread将返回最后一个值的部分结果。 读取每个值之后要跳过的字节数,指定为标量。如果将precision指定为bitnubitn,请以位为单位指定skip

            使用skip参数从固定长度记录的非连续字段中读取数据。读取文件中的字节的顺序,指定为字符向量或字符串标量。将 machinefmt 指定为下表中列出的值之一。对于bitnubitn精度,machinefmt指定字节中位的读取顺序,而字节的读取顺序仍与系统字节顺序相同。

    'n' 或 'native'

    系统字节排序方式(默认)

    'b' 或 'ieee-be'

    Big-endian 排序

    'l' 或 'ieee-le'

    Little-endian 排序

    's' 或 'ieee-be.l64'

    Big-endian 排序,64 位长数据类型

    'a' 或 'ieee-le.l64'

    Little-endian 排序,64 位长数据类型

            默认情况下,当前支持的所有平台都使用 little-endian 排序方式对新文件进行排序。现有二进制文件可以使用 big-endian 或 little-endian 排序方式。

            文件数据,以列向量形式返回。如果指定sizeA参数,则A是指定大小的矩阵。A中的数据为类double,除非在precision参数中指定不同的类。读取的字符数,以标量值形式返回。

            注:matlab读取.dat文件

    file='name.dat';           
    fid=fopen(file,'rb');                     %打开数据文件
    data=fread(fid,[x,y],'double');             %读取文件数据
    fclose(fid);                                %关闭文件

    展开全文
  • 【C 语言】文件操作 ( fread 函数 )

    千次阅读 2021-05-27 21:48:00
    一、fread 函数、 二、缓冲区受限的情况 ( 循环读取文件 | feof 函数判定文件读取完毕 )、 三、处理乱码问题、 四、记录读取的字节个数、 五、读取到 0 字节的情况、 六、读取完毕的情况、 七、读取文本文件 "\n" 与...



    二进制文件读写两个重要的函数 , fread 和 fwrite , fread 用于读取文件 , fwrite 用于写出文件 ;

    fread / fwrite 函数 既可以操作 二进制文件 , 又可以操作 文本文件 ;

    getc / putc 函数 , fscanf / fprintf 函数 , fgets / fgets 函数 , 只能用于操作 文本文件 ;



    一、fread 函数



    fread 函数作用 : 从文件中读取若干字节数据到内存缓冲区中 ;

    fread 函数原型 :

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

    void *buffer 参数 : 将文件中的二进制数据读取到该缓冲区中 ;

    size_t size 参数 : 读取的 基本单元 字节大小 , 单位是字节 , 一般是 buffer 缓冲的单位大小 ;

    • 如果 buffer 缓冲区是 char 数组 , 则该参数的值是 sizeof(char) ;
    • 如果 buffer 缓冲区是 int 数组 , 则该参数的值是 sizeof(int) ;

    size_t count 参数 : 读取的 基本单元 个数 ;

    FILE *stream 参数 : 文件指针 ;

    size_t 返回值 : 实际从文件中读取的 基本单元 个数 ; 读取的字节数是 基本单元数 * 基本单元字节大小 ;


    代码示例 : 一次性读满整个缓冲区 ;

    #include <stdio.h>
    
    int main()
    {
        // 使用 "rb" 读取二进制方式打开文件
        FILE *p = fopen("D:\\a.txt", "rb");
    
        // 用于接收读取数据的缓冲区
        char buffer[1024] = {0};
    
        // buffer : 将文件读取到内存的位置
        // sizeof(char) : 读取的基本单元字节长度
        // sizeof(buffer) : 读取的基本单元个数,
        //       读取字节个数是 sizeof(buffer) * sizeof(char)
        // p : 文件指针
        fread(buffer, sizeof(char), sizeof(buffer), p);
    
        // 打印读取的内容
        printf("buffer = %s\n", buffer);
    
        printf("Main End\n");
        return 0;
    }
    

    执行结果 :

    在这里插入图片描述



    二、缓冲区受限的情况 ( 循环读取文件 | feof 函数判定文件读取完毕 )



    假设缓冲区很小 , 文件很大 , 则需要循环读取文件数据 ;

    使用 feof(p) 判定文件是否读取完毕 , 如果返回 true 说明文件没有读取完毕 , 返回 false , 说明文件读取完毕 ;


    代码示例 :

    #include <stdio.h>
    
    int main()
    {
        // 使用 "rb" 读取二进制方式打开文件
        FILE *p = fopen("D:\\a.txt", "rb");
    
        // 用于接收读取数据的缓冲区
        char buffer[4] = {0};
    
        while(!feof(p)){
            memset(buffer, 0, sizeof(buffer));
            // buffer : 将文件读取到内存的位置
            // sizeof(char) : 读取的基本单元字节长度
            // sizeof(buffer) : 读取的基本单元个数,
            //       读取字节个数是 sizeof(buffer) * sizeof(char)
            // p : 文件指针
            fread(buffer, sizeof(char), sizeof(buffer), p);
    
            // 打印读取的内容
            printf("buffer = %s\n", buffer);
        }
    
        printf("Main End\n");
        return 0;
    }
    

    执行结果 : 读取之后出现乱码 , 这是由于每次读取 10 10 10 字节 , 但是字符串必须要以 ‘\0’ 进行结尾 , 如果没有 ‘\0’ 则会一直读取直到出现 ‘\0’ 字符串结尾位置 ;

    在这里插入图片描述



    三、处理乱码问题



    为了避免上述打印出现乱码的情况 , char buffer[4] = {0}; 准备了 4 4 4 字节缓冲区 , 每次只使用其中的 3 3 3 个字节 , 这就能保证最后一个字节必定是 ‘\0’ , 打印时就不会出现乱码 ;

    代码示例 :

    #include <stdio.h>
    
    int main()
    {
        // 使用 "rb" 读取二进制方式打开文件
        FILE *p = fopen("D:\\a.txt", "rb");
    
        // 用于接收读取数据的缓冲区
        char buffer[4] = {0};
    
        while(!feof(p)){
            memset(buffer, 0, sizeof(buffer));
            // buffer : 将文件读取到内存的位置
            // sizeof(char) : 读取的基本单元字节长度
            // sizeof(buffer) : 读取的基本单元个数,
            //       读取字节个数是 sizeof(buffer) * sizeof(char)
            // p : 文件指针
            fread(buffer, sizeof(char), sizeof(buffer) - 1, p);
    
            // 打印读取的内容
            printf("buffer = %s\n", buffer);
        }
    
        printf("Main End\n");
        return 0;
    }
    

    执行结果 : 每次从文件中读取 缓冲区字节数 - 1 个字节 , 则能完整的将文本打印出来 ;

    在这里插入图片描述



    四、记录读取的字节个数



    fread 函数返回值表示读取到的 基本单元 的个数 , 如果设置了 1KB 的缓冲区 , 但是文件中只有 5 字节 , 则 fread 的返回值就是实际读取到的数据个数 ;


    代码示例 :

    #include <stdio.h>
    
    int main()
    {
        // 使用 "rb" 读取二进制方式打开文件
        FILE *p = fopen("D:\\a.txt", "rb");
    
        // 用于接收读取数据的缓冲区
        char buffer[1024] = {0};
        // buffer : 将文件读取到内存的位置
        // sizeof(char) : 读取的基本单元字节长度
        // sizeof(buffer) : 读取的基本单元个数,
        //       读取字节个数是 sizeof(buffer) * sizeof(char)
        // p : 文件指针
        // 返回值 : fread 函数返回值表示读取到的 基本单元 的个数
        size_t count = fread(buffer, sizeof(char), sizeof(buffer) - 1, p);
    
        // 打印读取的内容
        printf("buffer = %s , read count = %u\n", buffer, count);
    
        printf("Main End\n");
        return 0;
    }
    
    

    执行结果 :

    在这里插入图片描述



    五、读取到 0 字节的情况



    如果 基本单元 大小 4 4 4 字节 , 文件中只有 3 3 3 字节数据 , 则使用 fread 函数读取文件 , 缓冲区设置 1KB , 则实际读取到的基本单元个数是 0 0 0 ;


    代码示例 :

    #include <stdio.h>
    
    int main()
    {
        // 使用 "rb" 读取二进制方式打开文件
        FILE *p = fopen("D:\\a.txt", "rb");
    
        // 用于接收读取数据的缓冲区
        char buffer[1024] = {0};
        // buffer : 将文件读取到内存的位置
        // sizeof(char) : 读取的基本单元字节长度
        // sizeof(buffer) : 读取的基本单元个数,
        //       读取字节个数是 sizeof(buffer) * sizeof(char)
        // p : 文件指针
        // 返回值 : fread 函数返回值表示读取到的 基本单元 的个数
        size_t count = fread(buffer, sizeof(int), sizeof(buffer) - 1, p);
    
        // 打印读取的内容
        printf("buffer = %s , read count = %u\n", buffer, count);
    
        printf("Main End\n");
        return 0;
    }
    

    执行结果 :

    在这里插入图片描述



    六、读取完毕的情况



    如果文件已经读取完毕 , 不关闭文件 , 再次调用 fread 函数继续读取 , 则读取到的 基本单元 个数是 0 0 0 ;


    使用 feof(p) 判定文件是否读取完毕 , 如果返回 true 说明文件没有读取完毕 , 返回 false , 说明文件读取完毕 ;


    代码示例 :

    #include <stdio.h>
    
    int main()
    {
        // 使用 "rb" 读取二进制方式打开文件
        FILE *p = fopen("D:\\a.txt", "rb");
    
        // 用于接收读取数据的缓冲区
        char buffer[1024] = {0};
        // buffer : 将文件读取到内存的位置
        // sizeof(char) : 读取的基本单元字节长度
        // sizeof(buffer) : 读取的基本单元个数,
        //       读取字节个数是 sizeof(buffer) * sizeof(char)
        // p : 文件指针
        // 返回值 : fread 函数返回值表示读取到的 基本单元 的个数
        size_t count = fread(buffer, sizeof(char), sizeof(buffer) - 1, p);
    
        // 打印第一次读取的内容
        printf("First fread : buffer = %s , read count = %u\n", buffer, count);
    
        count = fread(buffer, sizeof(int), sizeof(buffer) - 1, p);
    
        // 打印第二次读取的内容
        printf("Second fread : buffer = %s , read count = %u\n", buffer, count);
    
        printf("Main End\n");
        return 0;
    }
    

    执行结果 :

    在这里插入图片描述



    七、读取文本文件 “\n” 与 读取二进制文件 “\r\n” 区别



    以下区别只在 Windows 系统存在 , 在 Linux / Unix 中读取文本数据与二进制数据没有区别 ;


    使用 ‘rb’ 方式打开文件 , 读取二进制文件 , 然后调用 fread 函数读取文件 ,

    #include <stdio.h>
    
    int main()
    {
        // 使用 "rb" 读取二进制方式打开文件
        FILE *p = fopen("D:\\a.txt", "rb");
    
        // 用于接收读取数据的缓冲区
        char buffer[1024] = {0};
        // buffer : 将文件读取到内存的位置
        // sizeof(char) : 读取的基本单元字节长度
        // sizeof(buffer) : 读取的基本单元个数,
        //       读取字节个数是 sizeof(buffer) * sizeof(char)
        // p : 文件指针
        // 返回值 : fread 函数返回值表示读取到的 基本单元 的个数
        size_t count = fread(buffer, sizeof(char), sizeof(buffer) - 1, p);
    
        // 打印第一次读取的内容
        printf("fread : buffer = %s , read count = %u\n", buffer, count);
    
        // 逐个字节打印读取出数据的 ASCII 码
        int i = 0;
        for(i = 0; i < count; i ++){
            printf("buffer[%d] = %x\n", i, buffer[i]);
        }
    
        printf("Main End\n");
        return 0;
    }
    
    

    执行结果 : 第 2 2 2 个索引读取出来的值是 0xd 对应 ‘\r’ , 第 3 3 3 个值是 0xa 对应 ‘\n’ ;

    注意 : 最后两个字节是空行对应的 “\r\n” ;

    fread : buffer = ab
    cd
     , read count = 8
    buffer[0] = 61
    buffer[1] = 62
    buffer[2] = d
    buffer[3] = a
    buffer[4] = 63
    buffer[5] = 64
    buffer[6] = d
    buffer[7] = a
    Main End
    

    在这里插入图片描述



    使用 ‘r’ 方式打开文件 , 读取文本文件 , 然后调用 fread 函数读取文件 ,

    #include <stdio.h>
    
    int main()
    {
        // 使用 "rb" 读取二进制方式打开文件
        FILE *p = fopen("D:\\a.txt", "r");
    
        // 用于接收读取数据的缓冲区
        char buffer[1024] = {0};
        // buffer : 将文件读取到内存的位置
        // sizeof(char) : 读取的基本单元字节长度
        // sizeof(buffer) : 读取的基本单元个数,
        //       读取字节个数是 sizeof(buffer) * sizeof(char)
        // p : 文件指针
        // 返回值 : fread 函数返回值表示读取到的 基本单元 的个数
        size_t count = fread(buffer, sizeof(char), sizeof(buffer) - 1, p);
    
        // 打印第一次读取的内容
        printf("fread : buffer = %s , read count = %u\n", buffer, count);
    
        // 逐个字节打印读取出数据的 ASCII 码
        int i = 0;
        for(i = 0; i < count; i ++){
            printf("buffer[%d] = %x\n", i, buffer[i]);
        }
    
        printf("Main End\n");
        return 0;
    }
    
    

    执行结果 : 第 2 2 2 个索引读取出来的值是 0xa 对应 ‘\n’ ;

    最后的空行只有一个 ‘\n’ ;

    fread : buffer = ab
    cd
     , read count = 6
    buffer[0] = 61
    buffer[1] = 62
    buffer[2] = a
    buffer[3] = 63
    buffer[4] = 64
    buffer[5] = a
    Main End
    

    在这里插入图片描述

    展开全文
  • C++中fread函数和fwrite函数的用法

    万次阅读 2013-05-24 14:33:07
    2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。 (2)...

    1.函数功能

    用来读写一个数据块。

    2.一般调用形式

    fread(buffer,size,count,fp);

    fwrite(buffer,size,count,fp);

    3.说明

    (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

    (2)size:要读写的字节数;

    (3)count:要进行读写多少个size字节的数据项;

    (4)fp:文件型指针。

    4.例:

    1.fread(&id,1,10,f)就是把f里面的值读到id里面,每次读1个字节,一共读10次,或者把id里面的值都读完,不到10次也会停止。

    2.fwrite(&id,1,10,f)就是把id里面的值读到f里面,每次读1个字节,一共读10次或是fread(&id,10,1,f)就是把id里面的值读到里面,每次读10个字节,一共读1次。

    展开全文
  • read函数和fread函数的区别

    万次阅读 2016-08-21 18:24:50
    read用于从文件描述符对应的文件读取数据,调用成功返回读出的字节数;buf为读出数据的缓冲区,count为每次读取的字节数,出错返回-1,EOF返回0。 例如:一个文件大小600字节,每次读取400字节,则第一次读取返回...
  • c++相关技术 fread

    2015-05-08 17:21:02
    c++ 读文件 fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。
  • glibc fread函数源码剖析

    千次阅读 2016-07-17 17:52:40
    最近看APUE,看到了...先写个程序,调用一下fread函数。 #include int main() { char strbuf[12]; FILE* fp; fp = fopen("./temp","r"); fread(strbuf,sizeof(char),11,fp); return 0; } 好了,还是咱们的
  • fread函数和fwrite函数的用法

    千次阅读 2014-02-28 15:40:44
    fread函数和fwrite函数 1.函数功能  用来读写一个数据块。 2.一般调用形式  fread(buffer,size,count,fp);  fwrite(buffer,size,count,fp); 3.说明  (1)buffer:是一个指针,对fread来说,它是...
  • VC之fread函数和fwrite函数

    千次阅读 2016-07-08 22:54:41
    fread函数和fwrite函数 1.函数功能  用来读写一个数据块。 2.一般调用形式  fread(buffer,size,count,fp);  fwrite(buffer,size,count,fp); 3.说明  (1)buffer:是一个指针,对fread来说...
  • 1,fread是带缓冲的,read不带缓冲. 2,fopen是标准c里定义的,open是POSIX中定义的. 3,fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别. 4,fopen不能指定要创建文件的权限.open可以指定...
  • c语言fread函数的总结

    千次阅读 2017-08-21 18:33:22
    函数原型:size_t fread(void *buffer, size_t size, size_t count, FILE *stream); 参数:  buffer:用于接收数据的内存地址;  size:要读的每个数据项的字节数,单位是字节;  count:要读count个数据项,每个...
  • C中fread()函数返回值特别说明

    千次阅读 2015-09-20 08:14:17
    fread的定义形式: #include size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); 参数说明: void *ptr:指向缓冲区保存或读取的数据 size_t size:控制记录的大小,要读取的每个数据项的
  • C fread()函数

    万次阅读 多人点赞 2018-06-19 18:42:22
    freadfread是一个函数,它从文件流中读数据,最多读取count个项,每个项size个字节,如果调用成功返回实际读取到的项个数(小于或等于count),如果不成功或读到文件末尾返回 0。函数原型size_t fread ( void *...
  • fopen函数和fread函数、fwrite函数

    千次阅读 2018-08-19 09:43:04
    fopen(打开文件)相关函数 open,fclose表头文件 #include&lt;stdio.h&gt;定义函数 FILE * fopen(const char * path,const cha
  • 【了解函数-fread函数和fwrite函数】1.函数功能 用来读写一个数据块。 2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的...
  • fread函数和fwrite函数进行文件操作

    千次阅读 2017-06-27 10:38:48
    在程序中不仅需要一次输入输出一个数据,而是常常需要一次输入一组数据(如数组或机构体变量的值),C语言允许用fread函数从文件中读一个数据块,用fwrite函数向文件写一个数据块。在读写时是以二进制形式进行的。在...
  • MATLAB fread函数分析

    万次阅读 2012-02-27 21:12:14
    今天起开始总结下MATLAB的文件操作函数。MATLAB的确用起来很方便,...对我而言, fread的主要调用形式是这样的:   data = fread(fid, N, 'str')  fid不用说,自然是文件句柄(如fid=fopen('abc.txt' ,'r')),
  • 关于fread函数的问题

    千次阅读 2013-05-11 18:44:47
    今天为了对一个视频文件(.264格式)进行加密,使用了fopen和fread函数进行数据读取。但是问题出现了,我使用了以下代码  #define ENYMAXBUFSIZE 1024  FILE *stream = fopen( "test.264","r"); nRead=fread...
  • C语言fread函数了解

    万次阅读 2012-12-13 10:53:16
    fread()函数---- Reads data from a stream. #include size_t fread( void *buffer, size_t size, size_t count,FILE *stream ); 从一个文件流中读数据,读取count个元素,每个元素size字节.如果调用成功...
  • fread函数和fwrite函数

    2021-09-19 15:52:47
    2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp); 3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。 (2)size:要读写...
  • fread函数解析

    千次阅读 2013-01-07 15:25:27
    fread函数解析 1、 size_t fread(void *buffer,size_t elementsize,size_t count,FILE *stream) return fread_s(buffer,SIZE_MAX,elementsize,count,stream). //可以看出所有工作都交给了fread_s. 2...
  • fwrite和fread函数的用法小结

    千次阅读 2017-06-07 21:04:50
    fwrite和fread是以记录为单位的I/O函数fread和fwrite函数一般用于二进制文件的输入输出。 [cpp] view plain copy print? #include size_t fread(void *ptr, size_t size, size_t ...
  • verilog文件系统函数调用

    千次阅读 2017-03-01 22:45:12
    integer code = $fread( mem, fd, start, count); integer code = $fread( mem, fd, , count); 读取二进制流,将数据从fd读向myreg或mem,不可读x,z.start是指mem的位置, For start = 12 and the memory ...
  • 文件调用函数

    2019-03-04 20:35:34
    C语言的库函数 fopen fread fwrite fclose fseek fgets fputs ...Linux的系统调用函数 open read write close lseek 打开文件 FILE *fopen(const char *filename,const char *flag); int open(const char *filen...
  • 函数原型:FILE * fopen(const char * path,const char * mode); 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。 fopen_s,_wfopen_s安全性上相...
  • fread函数的应用

    千次阅读 2014-09-12 14:19:12
    函数fread的应用,从文件读入加快读取速度。
  • fwirte和fread函数

    2019-08-01 20:52:37
    fread和fwrite函数 size_t fread(void *ptr,size_t size, size_ number,FILE *stream); size_t fwrite(const void *ptr,size_t size, size_ number,FILE stream); 功能:全缓存的读写函数 第一个参数 buf:写的内容 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,304
精华内容 10,121
关键字:

fread函数的调用形式