C++ 中的fread() 函数从给定的输入流中读取指定数量的字符。
fread()原型
size_t fread(void * buffer, size_t size, size_t count, FILE * stream);
fread()
函数从给定的输入流中读取对象的计数,每个对象的大小为 size
字节。它类似于调用fgetc() size
次来读取每个对象。根据读取的字符数,文件位置指示器递增。
如果在读取文件时发生任何错误,则流的文件位置指示符的结果值是不确定的。
如果对象不是一般可复制的,则行为未定义。
如果大小或计数为零,则对fread
的调用将返回零并且不执行其他操作。
它在<cstdio> 头文件中定义。
参数:
- 缓冲区:指向存储对象的内存块的指针。
- size:每个对象的大小(以字节为单位)。
- count:要读取的对象数。
- stream:要从中读取数据的文件流。
返回:
fread()
函数返回成功读取的对象数。如果发生错误或文件结束条件,则返回值可能小于 count
。
示例 1:fread() 函数的工作原理
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
FILE *fp;
char buffer[100];
fp = fopen("data.txt","rb");
while(!feof(fp))
{
fread(buffer,sizeof(buffer),1,fp);
cout << buffer;
}
return 0;
}
假设文件包含以下数据:
Dennis Ritchie : C Bjarne Stroustrup : C++ Guido van Rossum : Python James Gosling : Java
运行程序时,输出将是:
Dennis Ritchie : C Bjarne Stroustrup : C++ Guido van Rossum : Python James Gosling : Java
示例 2:当计数或大小为零时 fread() 函数如何工作
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
FILE *fp;
char buffer[100];
int retVal;
fp = fopen("data.txt","rb");
/* when count is zero */
retVal = fread(buffer,sizeof(buffer),0,fp);
cout << "When count = 0, return value = " << retVal << endl;
/* when size is zero */
retVal = fread(buffer,0,1,fp);
cout << "When size = 0, return value = " << retVal << endl;
return 0;
}
运行程序时,输出将是:
When count = 0, return value = 0 When size = 0, return value = 0
相关用法
- C++ fread()用法及代码示例
- C++ free()用法及代码示例
- C++ freopen()用法及代码示例
- C++ frexp()用法及代码示例
- C++ fcvt()用法及代码示例
- C++ fwscanf()用法及代码示例
- C++ fmax()用法及代码示例
- C++ fdim()用法及代码示例
- C++ fmin()用法及代码示例
- C++ fetestexcept()用法及代码示例
- C++ forward_list::unique()用法及代码示例
- C++ forward_list::emplace_front()用法及代码示例
- C++ fopen()用法及代码示例
- C++ forward_list::max_size()用法及代码示例
- C++ forward_list::reverse()用法及代码示例
- C++ feupdateenv()用法及代码示例
- C++ forward_list::swap()用法及代码示例
- C++ forward_list::front()、forward_list::empty()用法及代码示例
- C++ functional::bad_function_call用法及代码示例
- C++ find_if()用法及代码示例
注:本文由纯净天空筛选整理自 C++ fread()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。