একটা কল্পনা করো!
তুমি একটা গেম বানালে যেখানে খেলোয়াড়ের স্কোর থাকে। কিন্তু প্রতি বার গেম খোলার সময় স্কোর আবার শূন্য হয়ে যায়! কত খারাপ, তাই না? কিন্তু যদি তুমি স্কোরটা একটা ফাইলে সেভ করে রাখতে, তাহলে পরের বার খুললেও পুরোনো স্কোর চলে আসত। ফাইল হ্যান্ডলিং ঠিক এই কাজটাই করে—তোমার প্রোগ্রামের ডেটাকে কম্পিউটারের হার্ডডিস্কে ‘স্থায়ী’ বাসা দেয়া।
📁 অধ্যায় ১: ফাইল আসলে কী আর কেন দরকার?
ফাইল হলো হার্ডডিস্কে রাখা ডেটার একটা সংগ্রহ (যেমন: .txt, .dat, .csv)।
মনে রেখো:
- RAM (মেমরি) → অস্থায়ী। প্রোগ্রাম বন্ধ করলেই মুছে যায়।
- হার্ডডিস্ক (ফাইল) → স্থায়ী। প্রোগ্রাম বন্ধ করলেও থাকে।
C তে ফাইল নিয়ে কাজ করতে বিশেষ ফাংশন আছে। এদের জন্য একটা হেডার ফাইল লাগে: #include <stdio.h> (যা আমরা আগে থেকেই ব্যবহার করি)।
🔑 অধ্যায় ২: ফাইল পয়েন্টার – ফাইলের ‘হ্যান্ডেল’
ফাইল খোলার জন্য প্রথমে দরকার একটা ফাইল পয়েন্টার। এটা ঠিকানা ধরে রাখে যে ফাইলটি কোথায় আছে।
ডিক্লেয়ারেশন:FILE *ফাইল_নাম;
এখানে FILE হলো C-এর বিশেষ ডেটা টাইপ (স্ট্রাকচার), যা ফাইলের সব তথ্য ধরে রাখে।
🚪 অধ্যায় ৩: ফাইল খোলা ও বন্ধ করা (fopen ও fclose)
ফাইলে কিছু লেখার বা পড়ার আগে তাকে ‘খুলতে’ হয়। আর কাজ শেষে ‘বন্ধ’ করতে হয় (না করলে ডেটা নষ্ট হতে পারে)।
ফাইল খোলার ফর্মুলা:ফাইল_পয়েন্টার = fopen("ফাইলের_নাম", "মোড");
মোড (Mode) গুলো:
"w"(Write) → নতুন ফাইল বানাও (পুরোনো থাকলে মুছে ফেলে)।"r"(Read) → ফাইল থেকে পড়ো। (ফাইল না থাকলে এরর দেখায়)।"a"(Append) → ফাইলের শেষে নতুন ডেটা যোগ করো।
ফাইল বন্ধ:fclose(ফাইল_পয়েন্টার);
✍️ অধ্যায় ৪: ফাইলে লেখা (fprintf ও fputs)
printf() যেমন স্ক্রিনে লেখে, fprintf() তেমন ফাইলে লেখে। শুধু প্রথম আর্গুমেন্টে ফাইল পয়েন্টারটা দিতে হয়।
উদাহরণ: একটা টেক্সট ফাইলে লেখা
text
#include <stdio.h>
int main() {
FILE *ফাইল;
// ফাইল খোলা (লেখার জন্য)
ফাইল = fopen("hello.txt", "w");
// ফাইল চেক করা (যদি খুলতে না পারে)
if (ফাইল == NULL) {
printf("ফাইল খোলা যায়নি!\n");
return 1;
}
// ফাইলে লেখা
fprintf(ফাইল, "হ্যালো! আমি C প্রোগ্রামিং শিখছি!\n");
fprintf(ফাইল, "আমার বয়স ১৬।");
// ফাইল বন্ধ করা
fclose(ফাইল);
printf("ফাইলে লেখা শেষ! 'hello.txt' ফাইলটা খুলে দেখো।");
return 0;
}
এখন তোমার কম্পিউটারে hello.txt নামে একটা ফাইল তৈরি হয়েছে! তাতে লেখা আছে:
text
হ্যালো! আমি C প্রোগ্রামিং শিখছি! আমার বয়স ১৬।
📖 অধ্যায় ৫: ফাইল থেকে পড়া (fscanf ও fgets)
ফাইল থেকে পড়তেও fscanf() ব্যবহার করো। এটা অনেকটা scanf()-এর মতো, কিন্তু ফাইল থেকে ইনপুট নেয়।
উদাহরণ: আগের ফাইলটা পড়ি
text
#include <stdio.h>
int main() {
FILE *ফাইল;
char বাফার[১০০];
ফাইল = fopen("hello.txt", "r");
if (ফাইল == NULL) {
printf("ফাইল খোলা যায়নি! (ফাইলটা আছে তো?)\n");
return 1;
}
// পুরো লাইন পড়া (fgets দিয়ে)
while (fgets(বাফার, 100, ফাইল) != NULL) {
printf("%s", বাফার);
}
fclose(ফাইল);
return 0;
}
আউটপুট:
text
হ্যালো! আমি C প্রোগ্রামিং শিখছি! আমার বয়স ১৬।
💡 fgets()-এর কাজ: একটা লাইন পড়ে (বা ১০০ অক্ষর) যতক্ষণ না ফাইলের শেষ আসে। NULL মানে ফাইলের শেষ।
➕ অধ্যায় ৬: যোগ করো (Append mode – “a”)
মনে করো, তুমি পুরোনো ফাইলের শেষে নতুন ডেটা যোগ করতে চাও। তাহলে "a" মোড ব্যবহার করো। এতে পুরোনো ডেটা মুছে যাবে না।
text
#include <stdio.h>
int main() {
FILE *ফাইল;
ফাইল = fopen("hello.txt", "a"); // যোগ করার মোড
if (ফাইল == NULL) {
printf("ফাইল খোলা যায়নি!\n");
return 1;
}
fprintf(ফাইল, "\nআমি C প্রোগ্রামার হতে চাই!");
fclose(ফাইল);
printf("নতুন লাইন যোগ করা শেষ!");
return 0;
}
এখন hello.txt-তে আগের লেখার নিচে নতুন লাইন যোগ হয়েছে:
text
হ্যালো! আমি C প্রোগ্রামিং শিখছি! আমার বয়স ১৬। আমি C প্রোগ্রামার হতে চাই!
🏗️ অধ্যায় ৭: বাস্তব প্রজেক্ট – ছাত্রদের ডেটা ফাইলে সেভ করো
আমরা আগের অধ্যায়ে ‘ছাত্র’ স্ট্রাকচার বানিয়েছিলাম। এখন সেই ডেটা ফাইলে সেভ করি, যাতে প্রোগ্রাম বন্ধ করলেও ডেটা থাকে!
text
#include <stdio.h>
#include <string.h>
typedef struct {
char নাম[৫০];
int রোল;
float জিপিএ;
} ছাত্র;
int main() {
ছাত্র ক্লাস[২];
FILE *ফাইল;
// ইনপুট নেওয়া
for(int i = 0; i < 2; i++) {
printf("ছাত্র %d-এর নাম: ", i+1);
scanf("%s", ক্লাস[i].নাম);
printf("রোল: ");
scanf("%d", &ক্লাস[i].রোল);
printf("জিপিএ: ");
scanf("%f", &ক্লাস[i].জিপিএ);
}
// ফাইলে সেভ করা
ফাইল = fopen("ছাত্র_তালিকা.txt", "w");
if (ফাইল == NULL) {
printf("ফাইল খোলা যায়নি!\n");
return 1;
}
for(int i = 0; i < 2; i++) {
fprintf(ফাইল, "নাম: %s, রোল: %d, জিপিএ: %.2f\n",
ক্লাস[i].নাম, ক্লাস[i].রোল, ক্লাস[i].জিপিএ);
}
fclose(ফাইল);
printf("ডেটা সেভ হয়েছে! 'ছাত্র_তালিকা.txt' দেখো।");
return 0;
}
এবার ফাইল ওপেন করে দেখো, তোমার দেওয়া ডেটা সুন্দরভাবে সেভ হয়ে আছে! পরের বার প্রোগ্রাম চালিয়ে তুমি "r" মোডে ফাইল পড়েই ডেটা আবার নিয়ে আসতে পারো।
🧠 অধ্যায় ৮: বাস্তব জীবনের প্রয়োগ (কেন এটা শিখছি?)
১. গেমের হাইস্কোর: প্রতিবার গেম বন্ধ করলেও স্কোর থাকে।
২. নোটপ্যাড অ্যাপ: তুমি যা লেখো, ফাইলে সেভ হয়।
৩. ডেটাবেস: ব্যাঙ্কের অ্যাকাউন্ট, স্কুলের রেকর্ড—সব ফাইলে সংরক্ষিত।
৪. কনফিগারেশন ফাইল: গেমের সেটিংস (ভলিউম, রেজোলিউশন) ফাইলে সেভ থাকে, তাই আবার খুললেও আগের সেটিংস থাকে।
🏠 তোমার জন্য হোমওয়ার্ক (চেষ্টা করতে হবে!)
১. "w" মোডে ১ থেকে ১০০ পর্যন্ত সব জোড় সংখ্যা numbers.txt ফাইলে লেখার প্রোগ্রাম বানাও।
২. "r" মোডে ওই ফাইল পড়ে স্ক্রিনে দেখাও।
৩. আগের অধ্যায়ের ‘বই’ স্ট্রাকচার ব্যবহার করে ৩টি বইয়ের ডেটা ফাইলে সেভ করো এবং পরে ফাইল থেকে পড়ে দেখাও।
⚠️ সাবধানতা (ফাইল নিয়ে ভুল)
- ফাইল খোলা চেক করা: সবসময়
if (ফাইল == NULL)চেক করো। ফাইল না থাকলে প্রোগ্রাম ক্র্যাশ করতে পারে। - ফাইল বন্ধ করা ভুলো না:
fclose()না করলে ডেটা ফ্লাশ (সেভ) নাও হতে পারে। - মোড ঠিক রাখো: পড়ার সময়
"r", লেখার সময়"w", যোগ করার সময়"a"—এগুলো মিক্স আপ করলে অদ্ভুত আচরণ করবে। - পাথ ঠিক রাখো: শুধু
"hello.txt"লিখলে ফাইল প্রোগ্রামের ফোল্ডারে তৈরি হয়। অন্য ফোল্ডারে রাখতে চাইলে"C:/myfolder/hello.txt"লিখতে হয়।
🚀 শেষ কথা – এবং একটা বিশাল ঘোষণা!
আজ তুমি শিখলে—
✅ ফাইল পয়েন্টার ও ফাইল খোলা-বন্ধ করা।
✅ fprintf দিয়ে ফাইলে লেখা।
✅ fgets বা fscanf দিয়ে ফাইল পড়া।
✅ "a" মোড দিয়ে ডেটা যোগ করা।
✅ পুরো স্ট্রাকচারের ডেটা ফাইলে সেভ করা।
🎉 অভিনন্দন! তুমি C প্রোগ্রামিংয়ের সব মৌলিক অধ্যায় শেষ করে ফেলেছো!
তোমার শেখা বিষয়গুলো:
✅ বেসিক সিনট্যাক্স ও ভেরিয়েবল
✅ কন্ডিশন (if-else)
✅ লুপ (for, while)
✅ অ্যারে ও স্ট্রিং
✅ ফাংশন
✅ পয়েন্টার
✅ স্ট্রাকচার
✅ ফাইল হ্যান্ডলিং
এখন তুমি চাইলেই নিজের ছোট ক্যালকুলেটর, ছাত্র ডেটাবেস, বা গেমের স্কোর ট্র্যাকার বানাতে পারো!
🎯 পরের আর্টিকেলে (শেষ পর্ব): আমরা একটা পূর্ণাঙ্গ মিনি-প্রজেক্ট বানাবো—যেখানে উপরের সবকিছু একসাথে ব্যবহার করবো। যেমন: ‘ছাত্রদের মার্কশিট ম্যানেজমেন্ট সিস্টেম’ – যেখানে ডেটা ইনপুট, ক্যালকুলেশন, আর ফাইলে সেভ করা—সব থাকবে!
📢 www.tolearnteam.com – ফাইল হ্যান্ডলিং নিয়ে কোনো সমস্যা? ফাইল ওপেন হচ্ছে না? কমেন্টে জানাও। তোমার প্রোগ্রামিং যাত্রা সফল হোক!
All Related Articles (Beginner Level)
- প্রোগ্রামিংয়ের জগতে প্রথম পদক্ষেপ: C Programming for Beginners
- C প্রোগ্রামিং – দ্বিতীয় অধ্যায়: Array আর String (ডেটার সারি ও শব্দের খেলা)
- C প্রোগ্রামিং – তৃতীয় অধ্যায়: ফাংশন (Function) – তোমার নিজস্ব জাদুমন্ত্র তৈরি করো!
- C প্রোগ্রামিং – চতুর্থ অধ্যায়: পয়েন্টার (Pointer) – কম্পিউটারের ঠিকানার খেলা!
- C প্রোগ্রামিং – পঞ্চম অধ্যায়: স্ট্রাকচার (Structure) – ডেটার ‘সুপারহিরো টিম’ বানাও!
- C প্রোগ্রামিং – ষষ্ঠ অধ্যায়: ফাইল হ্যান্ডলিং (File I/O) – ডেটাকে চিরস্থায়ী করো!
- সি প্রোগ্রামিং – সপ্তম ও শেষ অধ্যায়: পূর্ণাঙ্গ প্রজেক্ট – ‘ছাত্র মার্কশিট ম্যানেজমেন্ট সিস্টেম’
- C প্রোগ্রামিং – শেষ পাতা নয়, নতুন দিগন্ত! (রিক্যাপ ও ক্যারিয়ার রোডম্যাপ)
