Computer >> Máy Tính >  >> Lập trình >> C ++

hàm fread () trong chương trình C ++

Với nhiệm vụ là hiển thị hoạt động của fread () trong C ++. Trong bài viết này, chúng ta cũng sẽ xem xét các tham số khác nhau được truyền cho fread () và hàm này trả về gì.

fread () là một hàm có sẵn của C ++ để đọc một khối dữ liệu từ luồng. Hàm này đếm số lượng từng đối tượng có kích thước byte “size” từ luồng và lưu trữ chúng trong bộ nhớ đệm, sau đó nâng cao con trỏ vị trí theo tổng số byte được đọc. Số lượng byte được đọc nếu thành công sẽ là kích thước * đếm.

Cú pháp

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

Tham số

Hàm này sẽ yêu cầu tất cả 4 tham số. Hãy hiểu các thông số.

  • buffer - Đây là một con trỏ của khối bộ nhớ đệm nơi lưu trữ các byte đọc từ luồng.

  • size - Nó xác định kích thước của mỗi phần tử được đọc theo byte. (size_t là int unsigned).

  • count - Số phần tử được đọc. \

  • file_stream - Con trỏ của luồng tệp mà từ đó chúng ta muốn đọc các byte.

Giá trị trả lại

Số phần tử đã đọc thành công được trả về.

Nếu bất kỳ lỗi đọc nào xảy ra hoặc nó đến cuối tệp, số phần tử được trả về sẽ thay đổi so với biến đếm.

Ví dụ

#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)) //will read the file {
      // will read the contents of the file.
      fread(buf, sizeof(buf), 1, file_stream);
      cout << buf;
   }
   return 0;
}

Giả sử tệp tp.txt có nội dung sau

điểm hướng dẫn

Đóng góp

bất cứ thứ gì ở đây

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

tutorialspoint
Contribution
anything here

Hãy lấy ví dụ và kiểm tra kết quả đầu ra khi số lượng bằng 0 và kích thước bằng 0.

Ví dụ

#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 << "The count = 0, then return value = " << retVal << endl;
   retVal = fread(buffer,0,1,fp);
   cout << "The size = 0, then value = " << retVal << endl;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

The count = 0, then return value = 0
The size = 0, then value = 0