এই আর্টিকেলে আমরা C++-এ fread() ফাংশনের কাজকর্ম, প্যারামিটার এবং রিটার্ন ভ্যালু দেখব।
fread() C++-এ একটি বিল্ট-ইন ফাংশন যা একটি স্ট্রিম থেকে ডেটার একটি ব্লক পড়ে। এই ফাংশন স্ট্রিম থেকে size বাইট আকারের count সংখ্যক অবজেক্ট গণনা করে এবং সেগুলো বাফার মেমরিতে সংরক্ষণ করে, তারপর পজিশন পয়েন্টার পড়া মোট বাইটের পরিমাণ আগ্রসর করে। সফল হলে পড়া মোট বাইট হবে size * count।
সিনট্যাক্স
size_t fread(void *buffer, size_t size, size_t count, FILE *file_stream);
প্যারামিটার
- buffer: বাফার মেমরি ব্লকের পয়েন্টার যেখানে স্ট্রিম থেকে পড়ে বাইটগুলো সংরক্ষিত হবে।
- size: পড়ার প্রতিটি এলিমেন্টের আকার বাইটে। (
size_tহলো আনসাইনড ইন্ট)। - count: পড়ার এলিমেন্টের সংখ্যা।
- file_stream: যে ফাইল স্ট্রিম থেকে পড়া হবে তার পয়েন্টার।
রিটার্ন ভ্যালু
সফলভাবে পড়ে এলিমেন্টের সংখ্যা রিটার্ন করে। যদি পড়ার সময় এরর হয় বা এন্ড-অফ-ফাইল পৌঁছায়, তবে রিটার্ন হওয়া সংখ্যা count-এর চেয়ে কম হতে পারে।
উদাহরণ ১: ফাইল পড়া
#include <bits/stdc++.h>
#include <cstdio>
using namespace std;
int main() {
FILE* file_stream;
char buf[100];
file_stream = fopen("tp.txt", "r");
if (!file_stream) {
cerr << "File open failed!";
return 1;
}
while (!feof(file_stream)) {
// will read the contents of the file.
size_t read_count = fread(buf, sizeof(buf), 1, file_stream);
if (read_count > 0)
cout << buf;
}
fclose(file_stream);
return 0;
}
ধরে নিচ্ছি tp.txt ফাইলে নিচের কন্টেন্ট আছে:
tutorialspoint Contribution anything here
আউটপুট
tutorialspoint Contribution anything here
উদাহরণ ২: কাউন্ট বা সাইজ ০ হলে
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
FILE *fp;
char buffer[100];
size_t retVal;
fp = fopen("tpempty.txt", "rb");
if (!fp) return 1;
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;
fclose(fp);
return 0;
}
আউটপুট
The count = 0, then return value = 0 The size = 0, then value = 0