📌  相关文章
📜  C++ fread()

📅  最后修改于: 2020-09-25 08:21:37             🧑  作者: Mango

C++中的fread() 函数从给定的输入流中读取指定数量的字符 。

fread()原型

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

fread() 函数从给定的输入流中读取对象的数量,每个对象的大小为size字节。这类似于调用fgetc()的size时间来读取每个对象。根据读取的字符数,文件位置指示符将增加。

如果在读取文件时发生任何错误,则流的文件位置指示符的结果值不确定。

如果对象不是普通可复制的,则行为是不确定的。

如果大小或计数为零,则对fread的调用将返回零,并且不执行其他任何操作。

它在头文件中定义。

fread()参数

fread()返回值

fread() 函数返回成功读取的对象数。如果发生错误或文件结束条件,则返回值可能小于count

示例1:fread() 函数的工作方式

#include 
#include 

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:当count或size为零时fread() 函数的工作方式

#include 
#include 

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