fread是C语言标准库中的一个函数,用于从文件中读取二进制数据。它定义在<stdio.h>头文件中。
函数原型
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
参数说明
ptr- 指向存储读取数据的内存块的指针size- 每个数据项的大小(以字节为单位)nmemb- 要读取的数据项数量stream- 指向FILE对象的指针,标识要读取的输入流
返回值
- 成功时返回实际读取的数据项数量(不是字节数)
- 如果发生错误或到达文件末尾,返回值可能小于
nmemb - 可以使用
feof()或ferror()来区分是错误还是文件结束
使用示例
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char buffer[100];
size_t result;
fp = fopen("example.bin", "rb");
if (fp == NULL) {
perror("打开文件失败");
return EXIT_FAILURE;
}
// 尝试读取10个大小为1字节的数据项
result = fread(buffer, 1, 10, fp);
if (result != 10) {
if (feof(fp))
printf("到达文件末尾\n");
else if (ferror(fp))
perror("读取文件时出错");
} else {
printf("成功读取了10个字节\n");
}
fclose(fp);
return EXIT_SUCCESS;
}
注意事项
fread用于二进制文件读取,对于文本文件建议使用fgets等函数- 读取的数据不会自动添加字符串终止符'\0'
- 函数不区分文件结束和错误,需要额外检查
- 读取的数据量是
size * nmemb字节 - 文件必须以适当的模式打开(如"rb"用于二进制读取)
与fwrite的关系
fread通常与fwrite配对使用,fwrite用于将二进制数据写入文件,两者参数格式相同但功能相反。
1323

被折叠的 条评论
为什么被折叠?



