একটা ফাইল নিয়ে কাজ করার জন্য তা ডিক্লেয়ার করতে হয়। ডিক্লেয়ার করা হয় FILE পয়েন্টার দিয়ে। যেমনঃ
FILE বড় হাতের অক্ষরে লিখতে হয় এবং MyFile হচ্ছে পয়েন্টার ভেরিয়েবল। এটা মুলত একটা বাফার তৈরি করে কম্পিউটার মেমরি এবং ঐ ফাইল এর মধ্যে। পয়েন্টার ভেরিয়েবল তৈরি করার পর আমরা ফাইলটি ওপেন করতে পারব। তার জন্য fopen ফাংশান ব্যবহার করতে হয়। যা সাধারনত লেখা হয় এমনঃ MyFIle = fopen(file-name, file-type); । ফাইল এর নাম এবং টাইফ দুটি স্ট্রিং । এবং ফাইল টাইপ হচ্ছে ফাইলটা কোন মুড এ ওপেন হবে তা। যেমন Read Only, Write Only অথবা দুটিই ইত্যাদি। যেমনঃ
MyFile = fopen (“myfile.txt”,”w”);
file-type নিচের টেবিলের যে কোন একটা হতে পারেঃ
file-type নিচের টেবিলের যে কোন একটা হতে পারেঃ
r | শুধু মাত্র ফাইলটি রিড করার জন্য ওপেন করা। |
w |
|
a |
|
r+ | ফাইলটি রিড করা বা রাইট করার জন্য ওপেন করা। এবং ফাইলের শুরুতে কিছু লেখা। |
w+ | ফাইলটি রিড করা বা রাইট করার জন্য ওপেন করা। |
a+ | ফাইলটি রিড করা বা রাইট করার জন্য ওপেন করা। এবং ফাইলের শেষে কিছু লেখা। |
ফাইল ওপেন করার জন্য তাতে কিছু লেখার জন্য fputs ফাংশান ব্যবহার করা হয়। যেমনঃ
fputs (“Writing to a file using ‘fopen’ example.”,MyFile);
ফাইলটি রিড বা রাইট করা হলে ফাইলোটি বন্ধ বা ক্লোজ করতে হয়, তার জন্য ব্যবহার করা হয় fclose ফাংশানঃ
fclose (MyFile);
আপনার সি প্রোজেক্টটা যে ফোল্ডারে সংরক্ষিত করছেন তা ওপেন করুন। তার ভেতর myfile.txt দেখতে পাবেন। এবং ফাইলটি ওপেন করলে Writing to a file using ‘fopen’ example. লেখাটি দেখতে পাবেন।
ফাইল থেকে ডেটা পড়াঃ
ফাইল থেকে ডেটা পড়ার জন্য fscanf ব্যবহার করা হয়।
নিচের কোড গুলো দেখুনঃ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #include <stdio.h> int main () { FILE * MyFile; char string[10]; MyFile = fopen ( "myfile.txt" , "r+" ); while (! feof (MyFile)) { fscanf (MyFile, "%s" ,string); printf ( "%s " , &string); } fclose (MyFile); return 0; } |
এখানে feof দিয়ে end-of-file চেক করা হয়েছে। অর্থাৎ যতক্ষন পর্যন্ত ফাইলের মধ্যে কোন ডেটা থাকবে ততক্ষন পর্যন্ত ফাইলটির ডেটা গুলো fscanf দিয়ে রিড করা হবে।
fscanf এর তিনটা প্যারামিটার রয়েছে। fscanf(file-name, data-type, variable);
file-name হচ্ছে ফাইলের নাম। যে ফাইল থেকে ডেটা পড়া হবে। data-type হচ্ছে ফাইলের ডেটা টাইফ। বা কোন টাইফে ডেটা গুলো পড়া হবে। এখানে char টাইফের ডেটা পড়া হয়েছে। ইচ্ছে করলে int অথবা floating point ডেটা পড়া যাবে।
variable হচ্ছে ভেরিয়েবলের নাম, যেখানে ডেটা গুলো ফাইল থেকে পড়ে সংরক্ষিত থাকবে।
আমরা এ পর্যন্ত যে ফোল্ডারে আমাদের সি প্রোগ্রাম টা রয়েছে তা থাকে ফাইলটি ওপেন করছি বা রিড করছি। ইচ্ছে করলে আমরা যে কোন ডিরেক্টরি থেকে ফাইলটি ওপেন করতে পারি। file-name এর জায়গায় পুরো ফাইল পাথ দিলেই হবে। নিচের উদাহরনটি দেখুনঃ
fscanf এর তিনটা প্যারামিটার রয়েছে। fscanf(file-name, data-type, variable);
file-name হচ্ছে ফাইলের নাম। যে ফাইল থেকে ডেটা পড়া হবে। data-type হচ্ছে ফাইলের ডেটা টাইফ। বা কোন টাইফে ডেটা গুলো পড়া হবে। এখানে char টাইফের ডেটা পড়া হয়েছে। ইচ্ছে করলে int অথবা floating point ডেটা পড়া যাবে।
variable হচ্ছে ভেরিয়েবলের নাম, যেখানে ডেটা গুলো ফাইল থেকে পড়ে সংরক্ষিত থাকবে।
আমরা এ পর্যন্ত যে ফোল্ডারে আমাদের সি প্রোগ্রাম টা রয়েছে তা থাকে ফাইলটি ওপেন করছি বা রিড করছি। ইচ্ছে করলে আমরা যে কোন ডিরেক্টরি থেকে ফাইলটি ওপেন করতে পারি। file-name এর জায়গায় পুরো ফাইল পাথ দিলেই হবে। নিচের উদাহরনটি দেখুনঃ
ফাইল নিয়ে কাজ করা অনেক সহজ তাই না?
টেবিলে আগেই বলছি যে w মুডে ফাইলটি ওপেন করলে তার মধ্যের সকল ডেটা মুছে যাবে এবং নতুন করে ডেটা রাইট হবে। কিন্তু আমরা যদি আগের ডেটা না মুছে আগের ডেটার নিছে নতুন ডেটা লিখতে চাই তার জন্য ব্যবহার করব a মুড।
নিচের কোড টি কয়েকবার রান করিয়ে দেখুনঃ
এতটুকুই, অন্যান্য মুড আপনারা ট্রাই করে দেখুন। অন্য কোন ডেটা টাইপ সংরক্ষণ করে দেখুনন। অন্য ডেটা টাইপের ডেটা গুলো আবার রিড করার চেষ্টা করুন।