IT Home Solution
C Programming

ফাইল অপারেশন in C Programming

আমাদের এমন প্রোগ্রাম লিখতে হতে পারে, যেখানে প্রোগ্রাম কিছু ডেটা কম্পিউটারে সেভ করে রাখবে। কম্পিউটারে ডেটা সেভ করে রাখার সবচেয়ে সহজ উপায় হচ্ছে ফাইলে রাখা। কোন ফাইলে ডেটা রাখা এবং পরে আবার ঐ ফাইল থেকে ডেটা গুলো নিয়ে পুনরায় কাজ করার উপায় জানব আমরা এই অধ্যায়।

 

ফাইল ডিক্লেয়ার

একটা ফাইল নিয়ে কাজ করার জন্য তা ডিক্লেয়ার করতে হয়। ডিক্লেয়ার করা হয় FILE পয়েন্টার দিয়ে। যেমনঃ

FILE *MyFile;

FILE বড় হাতের অক্ষরে লিখতে হয় এবং MyFile হচ্ছে পয়েন্টার ভেরিয়েবল। এটা মুলত একটা বাফার তৈরি করে কম্পিউটার মেমরি এবং ঐ ফাইল এর মধ্যে। পয়েন্টার ভেরিয়েবল তৈরি করার পর আমরা ফাইলটি ওপেন করতে পারব। তার জন্য fopen ফাংশান ব্যবহার করতে হয়। যা সাধারনত লেখা হয় এমনঃ

MyFIle = fopen(file-name, file-type);

 

ফাইল এর নাম এবং টাইপ দুটি স্ট্রিং। ফাইল টাইপ হচ্ছে ফাইলটা কোন মুড এ ওপেন হবে তা। যেমন Read Only, Write Only অথবা দুটিই ইত্যাদি। যেমনঃ

MyFile = fopen (“myfile.txt”,”w”);

file-type নিচের টেবিলের যে কোন একটা হতে পারেঃ

 

টাইপ কাজ
r শুধু মাত্র ফাইলটি রিড করার জন্য ওপেন করা।
w
  • ফাইলটিতে কিছু রাইট করার জন্য ওপেন করা।
  • ফাইলে যদি আগে কিছু থাকে তাহলে তা মুছে যাবে।
  • ফাইল যদি না থাকে, তাহলে অটোমেটিক ভাবে তৈরি হবে।
a
  • ফাইলের শেষে কিছু রাইট করার জন্য ওপেন করা।
  • যদি ফাইলে আগে কিছু থাকে, তাহলে তার শেষে রাইট হবে।
  • ফাইল যদি না থাকে, তাহলে অটোমেটিক ভাবে তৈরি হবে।
r+ ফাইলটি রিড করা বা রাইট করার জন্য ওপেন করা। এবং ফাইলের শুরুতে কিছু লেখা।
w+ ফাইলটি রিড করা বা রাইট করার জন্য ওপেন করা।
a+ ফাইলটি রিড করা বা রাইট করার জন্য ওপেন করা। এবং ফাইলের শেষে কিছু লেখা।

ফাইলে ডেটা লেখাঃ

ফাইল ওপেন করে তাতে কিছু লেখার জন্য fputs ফাংশান ব্যবহার করা হয়। লিখতে হয় এভাবেঃ

 

fputs (“Writing to a file using fopen.”,MyFile);

ফাইলটি রিড বা রাইট করা হলে ফাইলোটি বন্ধ বা ক্লোজ করতে হয়, তার জন্য ব্যবহার করা হয় fclose ফাংশনঃ

 

fclose (MyFile);

 

সম্পূর্ণ একটা প্রোগ্রামঃ

#include <stdio.h>
int main ()
{
    FILE * MyFile;
    char string[10];
    MyFile = fopen ("myfile.txt","a");

    fputs ("Writing to a file using fopen. \n",MyFile);
    fclose(MyFile);

    return 0;
}

এখানে শুধু মাত্র ফাইল টাপটা পরিবর্তন করেছি। এখন যতবার তুমি প্রোগ্রাম রান করবে, myfile.txt ফাইলে ততবার একটি করে লেখা যুক্ত হতে থাকবে।

 

উপরের উদাহরণে ফাইলটি আমাদের প্রোগ্রাম যে ফোল্ডারে, সেখানেই সেভ হবে। তুমি চাইলে অন্য যে কোন পাথ বলে দিতে পারো। যেমন নিচের প্রোগ্রামটি দেখোঃ

#include <stdio.h>
int main ()
{
 FILE * MyFile;
 MyFile = fopen ("F:\myfile.txt","a");
 if (MyFile!=NULL)
 {
     fputs ("Writing to a file using 'fopen' example.",MyFile);
     fclose (MyFile);
 }
 return 0;
}

 

তোমার কম্পিউটারে যদি F ড্রাইভ থাকে, তাহলে myfile.txt ফাইলটা F ড্রাইভে সেভ হবে। তুমি চাইলে অন্য যে কোন ড্রাইভ বলে দিতে পারো। বলে দিতে পারো ফোল্ডারও। যদি তোমার ফোল্ডার হয় F:\My Folder তাহলে তোমাকে লিখতে হবে এভাবেঃ F:\\My Folder\\myfile.txt। কারণ সি প্রোগ্রামিং এ ব্যাকস্ল্যাস (\) ব্যবহার করার জন্য ডাবল ব্যাকস্ল্যাস ব্যবহার করতে হয়।

 

ফাইল থেকে ডেটা পড়াঃ

ফাইল থেকে ডেটা পড়ার জন্য fscanf ব্যবহার করা হয়।

নিচের প্রোগ্রামটি রান করে দেখো। প্রোগ্রামটি রান করার পূর্বে খেয়াল রাখতে হবে যেন তোমার প্রোগ্রামটি যে ফোল্ডারে রয়েছে, ঐ ফোল্ডারে myfile.txt নামে একটা ফাই ল থাকে। এবং ঐ ফাইলে কিছু লেখা থাকে। না হয় প্রোগ্রামটি ভুল দেখাবে।

#include <stdio.h>
int main ()
{
    FILE * MyFile;
    char string[1000];
    MyFile = fopen ("myfile.txt","r+");

    while(! feof(MyFile))
    {
        fscanf(MyFile,"%s",string);

        printf("%s ", &string);
    }
    fclose (MyFile);
    return 0;
}

প্রোগ্রামটি রান করলে myfile.txt ফাইল থেকে লেখা গুলো পড়বে এবং কনসোলে দেখাবে। প্রোগ্রামটি কিভাবে কাজ করেছে, তা জানা যাক।

 

feof দিয়ে end-of-file চেক করা হয়। অর্থাৎ যতক্ষন পর্যন্ত ফাইলের মধ্যে কোন ডেটা থাকবে ততক্ষন পর্যন্ত ফাইলটির ডেটা গুলো fscanf দিয়ে রিড করবে।

fscanf এর তিনটা প্যারামিটার রয়েছে। fscanf(file-name, data-type, variable);

file-name হচ্ছে ফাইলের নাম। যে ফাইল থেকে ডেটা পড়া হবে। data-type হচ্ছে ফাইলের ডেটা টাইপ। বা কোন টাইপে ডেটা গুলো পড়া হবে। এখানে char টাইফের ডেটা পড়া হয়েছে। ইচ্ছে করলে int অথবা floating point ডেটা পড়া যাবে। তবে তখন খেয়াল রাখতে হবে যেন ফাইলে ইন্টিজার বা ফ্লোটিং পয়েন্ট ডেটা থাকে। variable হচ্ছে ভেরিয়েবলের নাম, যেখানে ডেটা গুলো ফাইল থেকে পড়ে সংরক্ষিত থাকবে।

আমরা এ পর্যন্ত যে ফোল্ডারে আমাদের সি প্রোগ্রাম টা রয়েছে তা থাকে ফাইলটি ওপেন করছি বা রিড করছি। ইচ্ছে করলে আমরা যে কোন ডিরেক্টরি থেকে ফাইলটি ওপেন করতে পারি। file-name এর জায়গায় পুরো ফাইল পাথ দিলেই হবে। নিচের উদাহরনটি দেখোঃ

#include <stdio.h>

int main ()
{
    FILE * MyFile;
    char string[1000];
    MyFile = fopen ("F:\\myfile.txt","r+");

    while(! feof(MyFile))
    {
        fscanf(MyFile,"%s",string);
        printf("%s ", &string);
    }
    fclose (MyFile);
    return 0;
}

এটা ছিল ফাইল অপারেশন নিয়ে ব্যাসিক ধারণা। এবার তুমি তোমার ইচ্ছে মত ফাইল নিয়ে কাজ করতে পারো। ফাইলে যে কোন ডেটা টাইপের ডেটা রাখো। এরপর তা পড়। লুপ ব্যবহার কর। স্ট্রিং ব্যবহার কর।

 

অনুশীলনঃ

  1. সি প্রোগ্রামিং এ কোন ফাইলে কিছু লেখার জন্য কোন ফাংশন ব্যবহার করা হয়?
  2. কোন ফাইল থেকে ডেটা পড়ার জন্য কোন ফাইল টাইপ ব্যবহার করা হয়?
  3. কোন ফাইলে ডেটা লেখার জন্য কোন ফাইল টাইপ ব্যবহার করা হয়?
  4. কোন ফাইল থেকে ডেটা পড়ার জন্য কোন ফাংশন ব্যবহার করা হয়?
  5. fclose কেন ব্যবহার করা হয়?
  6. fopen এর কাজ কি? কেন ব্যবহার করা হয়?
  7. fputs ব্যবহার করে একটা প্রোগ্রাম লিখ।
  8. একটা প্রোগ্রাম লিখ, যা তোমার নাম, তোমার স্কুল/কলেজ/ইউনিভার্সিটি এবং তোমার রোল বা আইডি আলাদা আলাদা লাইনে একটা ফাইলে লিখে রাখবে।
  9. একটা প্রোগ্রাম লিখ, যা দিয়ে একটা ফাইল থেকে ইন্টিজার ভ্যালু গুলো পড়তে পারবে।

Leave a Reply

Your email address will not be published. Required fields are marked *