當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。