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