Bài viết này trình bày cách hoạt động của fread() trong C++. Chúng ta cũng sẽ xem các tham số và giá trị trả về.
fread() là hàm built-in của C++ đọc một khối dữ liệu từ stream. Hàm đếm số đối tượng mỗi đối tượng kích thước size byte từ stream và lưu vào bộ nhớ đệm (buffer), sau đó con trỏ vị trí tiến thêm tổng số byte đã đọc. Số byte đọc thành công bằng size * count.
Cú pháp
fread(void *buffer, size_t size, size_t count, FILE *file_stream);
Tham số
buffer– Con trỏ tới khối bộ nhớ đệm nơi lưu byte đọc từ stream.size– Kích thước mỗi phần tử cần đọc tính bằng byte (size_tlà unsigned int).count– Số lượng phần tử cần đọc.file_stream– Con trỏ file stream để đọc byte.
Giá trị trả về
Trả về số phần tử đọc thành công. Nếu lỗi đọc hoặc gặp end-of-file, số phần tử trả về sẽ khác với count.
Ví dụ 1: Đọc file văn bản
#include <bits/stdc++.h>
#include <cstdio>
using namespace std;
int main() {
FILE* file_stream;
char buf[100];
file_stream = fopen("tp.txt", "r");
while (!feof(file_stream)) {
fread(buf, sizeof(buf), 1, file_stream);
cout << buf;
}
return 0;
}
Giả sử tp.txt có nội dung:
tutorialspoint Contribution anything here
Kết quả
tutorialspoint Contribution anything here
Ví dụ 2: Kiểm tra khi count=0 hoặc size=0
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
FILE *fp;
char buffer[100];
int retVal;
fp = fopen("tpempty.txt", "rb");
retVal = fread(buffer, sizeof(buffer), 0, fp);
cout << "Count = 0, giá trị trả về = " << retVal << endl;
retVal = fread(buffer, 0, 1, fp);
cout << "Size = 0, giá trị trả về = " << retVal << endl;
return 0;
}
Kết quả
Count = 0, giá trị trả về = 0 Size = 0, giá trị trả về = 0