文章目录
- 一、fread 函数
- 二、缓冲区受限的情况 ( 循环读取文件 | feof 函数判定文件读取完毕 )
- 三、处理乱码问题
- 四、记录读取的字节个数
- 五、读取到 0 字节的情况
- 六、读取完毕的情况
- 七、读取文本文件 " " 与 读取二进制文件 " " 区别
二进制文件读写两个重要的函数 , 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
", buffer);
printf("Main End
");
retu