กำหนดให้แสดงการทำงานของ 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