Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน fread() ในโปรแกรม C++


กำหนดให้แสดงการทำงานของ fread() ใน C++ ในบทความนี้ เราจะพิจารณาถึงพารามิเตอร์ต่างๆ ที่ส่งผ่านไปยัง fread() และฟังก์ชันนี้ส่งคืนอะไร

fread() เป็นฟังก์ชัน inbuilt ของ C++ ซึ่งอ่านบล็อกข้อมูลจากสตรีม ฟังก์ชันนี้จะนับจำนวนอ็อบเจ็กต์ที่มีขนาดไบต์ "ขนาด" จากสตรีมและจัดเก็บไว้ในหน่วยความจำบัฟเฟอร์ จากนั้นตัวชี้ตำแหน่งจะเลื่อนไปข้างหน้าด้วยจำนวนไบต์ที่อ่านทั้งหมด จำนวนไบต์ที่อ่านหากสำเร็จจะเป็นขนาด *นับ

ไวยากรณ์

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

พารามิเตอร์

ฟังก์ชันนี้จะต้องใช้ทั้ง 4 พารามิเตอร์ มาทำความเข้าใจพารามิเตอร์กันเถอะ

  • บัฟเฟอร์ - นี่คือตัวชี้ของบล็อกหน่วยความจำบัฟเฟอร์ที่เก็บไบต์ที่อ่านจากสตรีมไว้

  • ขนาด - กำหนดขนาดของแต่ละองค์ประกอบที่จะอ่านเป็นไบต์ (size_t เป็น int ที่ไม่ได้ลงนาม)

  • count − จำนวนองค์ประกอบที่จะอ่าน\

  • file_stream - ตัวชี้ของสตรีมไฟล์ที่เราต้องการอ่านไบต์

ผลตอบแทนที่ได้รับ

จำนวนองค์ประกอบที่อ่านสำเร็จจะถูกส่งคืน

หากเกิดข้อผิดพลาดในการอ่านหรือถึงจุดสิ้นสุดไฟล์ จำนวนองค์ประกอบที่ส่งคืนจะแตกต่างจากตัวแปรการนับ

ตัวอย่าง

#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;
}

สมมติว่าไฟล์ tp.txt มีเนื้อหาดังต่อไปนี้

บทช่วยสอน

ผลงาน

อะไรก็ได้ที่นี่

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

tutorialspoint
Contribution
anything here

มาดูตัวอย่างและตรวจสอบผลลัพธ์เมื่อการนับเป็นศูนย์และขนาดเป็นศูนย์

ตัวอย่าง

#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;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

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