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