当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ fread()用法及代码示例


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。