সি-তে ফাইলে লেখার জন্য fwrite() এবং পড়ার জন্য fread() ব্যবহার করা হয়।
fwrite() সিনট্যাক্স
fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
যেখানে:
- ptr - লেখার জন্য এলিমেন্টের অ্যারে পয়েন্টার
- size - প্রতিটি এলিমেন্টের আকার বাইটে
- nmemb - এলিমেন্টের সংখ্যা, প্রতিটির আকার size বাইট
- stream - আউটপুট স্ট্রিম নির্দিষ্টকারী FILE অবজেক্ট পয়েন্টার
fread() সিনট্যাক্স
fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
যেখানে:
- ptr - কমপক্ষে size*nmemb বাইট আকারের মেমরি ব্লকের পয়েন্টার
- size - পড়ার জন্য প্রতিটি এলিমেন্টের আকার বাইটে
- nmemb - এলিমেন্টের সংখ্যা, প্রতিটির আকার size বাইট
- stream - ইনপুট স্ট্রিম নির্দিষ্টকারী FILE অবজেক্ট পয়েন্টার
এলগরিদম
Begin
Student স্ট্রাকচার তৈরি করুন ভেরিয়েবল ঘোষণা করতে
ফাইল খুলুন লেখার জন্য
ফাইল খোলার সময় কোনো এরর হয়েছে কিনা চেক করুন
ভেরিয়েবলগুলো ডেটা দিয়ে ইনিশিয়ালাইজ করুন
যদি ফাইল সফলভাবে খুলে যায়, fwrite ব্যবহার করে স্ট্রাকচার লিখুন
ফাইল বন্ধ করুন লেখার জন্য
ফাইল খুলুন পড়ার জন্য
ফাইল খোলার সময় কোনো এরর হয়েছে কিনা চেক করুন
যদি ফাইল সফলভাবে খুলে যায়, fread ব্যবহার করে ফাইল পড়ুন
ফাইল বন্ধ করুন পড়ার জন্য
কোনো এরর হয়েছে কিনা চেক করুন
ডেটা প্রিন্ট করুন
End.
উদাহরণ কোড
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
int roll_no;
char name[20];
};
int main() {
FILE *of;
of = fopen("c1.txt", "w");
if (of == NULL) {
fprintf(stderr, "\nError to open the file\n");
exit(1);
}
struct Student inp1 = {1, "Ram"};
struct Student inp2 = {2, "Shyam"};
fwrite(&inp1, sizeof(struct Student), 1, of);
fwrite(&inp2, sizeof(struct Student), 1, of);
if(fwrite != 0)
printf("Contents to file written successfully!\n");
else
printf("Error writing file!\n");
fclose(of);
FILE *inf;
struct Student inp;
inf = fopen("c1.txt", "r");
if (inf == NULL) {
fprintf(stderr, "\nError to open the file\n");
exit(1);
}
while(fread(&inp, sizeof(struct Student), 1, inf))
printf("roll_no = %d name = %s\n", inp.roll_no, inp.name);
fclose(inf);
}
আউটপুট
Contents to file written successfully! roll_no = 1 name = Ram roll_no = 2 name = Shyam