হাই-লেভেল I/O vs লো-লেভেল I/O
| বিষয় | হাই-লেভেল I/O | লো-লেভেল I/O |
| বোঝার সুবিধা | মানুষের জন্য সহজ | কম্পিউটারের জন্য সহজ |
| পোর্টেবিলিটি | উচ্চ (পোর্টেবল) | নিম্ন (নন-পোর্টেবল) |
| এক্সিকিউশন স্পিড | তুলনামূলক ধীর | দ্রুত |
প্রধান হাই-লেভেল I/O ফাংশনগুলো
| ফাংশন | কাজ |
| fprintf() | ফাইলে ফরম্যাটেড ডেটা লেখা |
| fscanf() | ফাইল থেকে ফরম্যাটেড ডেটা পড়া |
| putc() / fputc() | ফাইলে একক ক্যারেক্টার লেখা |
| getc() / fgetc() | ফাইল থেকে একক ক্যারেক্টার পড়া |
| putw() | ফাইলে ইন্টিজার লেখা |
| getw() | ফাইল থেকে ইন্টিজার পড়া |
| fputs() | ফাইলে স্ট্রিং লেখা |
| fgets() | ফাইল থেকে স্ট্রিং পড়া |
| fwrite() | ফাইলে পুরো রেকর্ড (স্ট্রাকচার) লেখা |
| fread() | ফাইল থেকে পুরো রেকর্ড (স্ট্রাকচার) পড়া |
ফাংশন ডিটেইলস ও সিনট্যাক্স
fprintf() & fscanf()
// লিখা
fprintf(fp, "%d %s %f", id, name, salary);
// পড়া
fscanf(fp, "%d %s %f", &id, name, &salary);
putc() & getc()
putc(ch, fp); // ক্যারেক্টার লিখুন
ch = getc(fp); // ক্যারেক্টার পড়ুন
putw() & getw()
putw(num, fp); // ইন্টিজার লিখুন
num = getw(fp); // ইন্টিজার পড়ুন
fputs() & fgets()
fputs(str, fp); // স্ট্রিং লিখুন
fgets(str, size, fp); // স্ট্রিং পড়ুন (সাইজ-১ ক্যারেক্টার বা \n পর্যন্ত)
fwrite() & fread() — স্ট্রাকচার/রেকর্ডের জন্য
struct emp { int id; char name[30]; float sal; } e;
FILE *fp;
// লিখুন
fwrite(&e, sizeof(e), 1, fp);
// পড়ুন
fread(&e, sizeof(e), 1, fp);
উদাহরণ প্রোগ্রাম ১: সংখ্যা ১-১০ ফাইলে লিখে পড়া
#include <stdio.h>
int main() {
FILE *fp;
int i;
fp = fopen("num.txt", "w");
for (i = 1; i <= 10; i++)
putw(i, fp);
fclose(fp);
fp = fopen("num.txt", "r");
printf("File content: ");
for (i = 1; i <= 10; i++) {
int val = getw(fp);
printf("%d", val);
}
fclose(fp);
return 0;
}
আউটপুট:
File content: 12345678910
উদাহরণ প্রোগ্রাম ২: স্ট্রাকচার দিয়ে স্ট্রুডেন্ট রেকর্ড fwrite/fread
#include <stdio.h>
struct student {
int sno;
char sname[30];
float marks;
};
int main() {
struct student s[2];
FILE *fp;
int i;
fp = fopen("student.txt", "w");
for (i = 0; i < 2; i++) {
printf("Student %d:\n", i+1);
printf("Number: "); scanf("%d", &s[i].sno);
printf("Name: "); scanf(" %[^\n]", s[i].sname);
printf("Marks: "); scanf("%f", &s[i].marks);
fwrite(&s[i], sizeof(s[i]), 1, fp);
}
fclose(fp);
fp = fopen("student.txt", "r");
for (i = 0; i < 2; i++) {
fread(&s[i], sizeof(s[i]), 1, fp);
printf("\nStudent %d: No=%d, Name=%s, Marks=%.2f", i+1, s[i].sno, s[i].sname, s[i].marks);
}
fclose(fp);
return 0;
}