Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm fread() trong C++


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_t là 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