কম্পিউটার টিউটোরিয়াল

সি ভাষায় র‍্যান্ডম এক্সেস ফাইল হ্যান্ডলিং (ftell, rewind, fseek)

র‍্যান্ডম ফাইল এক্সেস ফাংশনগুলো

সি ভাষায় ফাইলের যেকোনো লোকেশনে সরাসরি যাওয়ার জন্য নিম্নলিখিত ফাংশনগুলো ব্যবহার করা হয়:

  • ftell()
  • rewind()
  • fseek()

ftell() ফাংশন

ফাইল পয়েন্টারের বর্তমান পজিশন (বাইট অফসেট) রিটার্ন করে।

int pos = ftell(file_pointer);

ব্যবহার: ফাইলে কতটুকু ক্যারেক্টার লিখা/পড়া হয়েছে তা জানতে।

rewind() ফাংশন

ফাইল পয়েন্টারকে ফাইলের শুরুতে (অফসেট ০) নিয়ে যায়।

rewind(file_pointer);

এটি কল করার পর ftell() সবসময় 0 রিটার্ন করবে।

fseek() ফাংশন

ফাইল পয়েন্টারকে ফাইলের নির্দিষ্ট লোকেশনে সরিয়ে আনে।

fseek(file_pointer, offset, position);

প্যারামিটার

  • offset: কতটুকু বাইট ফরওয়ার্ড/ব্যাকওয়ার্ড যেতে হবে। পজিটিভ = ফরওয়ার্ড, নেগেটিভ = ব্যাকওয়ার্ড।
  • position (whence): রেফারেন্স পয়েন্ট। তিনটি মান হতে পারে:
    • SEEK_SET (0) — ফাইলের শুরু
    • SEEK_CUR (1) — বর্তমান পজিশন
    • SEEK_END (2) — ফাইলের শেষ

fseek() উদাহরণ

কলঅর্থ
fseek(fp, 0, 2)ফাইলের শেষ থেকে ০ বাইট ফরওয়ার্ড (যায়না, শেষে থাকে)
fseek(fp, 0, 0)ফাইলের শুরুতে যায়
fseek(fp, m, 0)শুরু থেকে m বাইট ফরওয়ার্ড
fseek(fp, -m, 2)শেষ থেকে m বাইট পিছনে

fseek() এরর কেস

  • fseek(fp, -m, 0) — ফাইলের শুরু থেকে পিছে যাওয়া যায়না (ইনভ্যালিড)।
  • fseek(fp, +m, 2) — ফাইলের শেষ থেকে ফরওয়ার্ড যাওয়া যায়না (ইনভ্যালিড)।

ব্যবহারিক টিপস

  • বাইনারি ফাইল মোড ("rb", "wb", "rb+") এ fseek সবচেয়ে নির্ভুলভাবে কাজ করে।
  • টেক্সট মোডে লাইন এন্ডিং কনভারশনের কারণে অফসেট কখনও কখনও অপ্রত্যাশিত হতে পারে।
  1. C ভাষায় putw() এবং getw() ফাংশন ব্যাখ্যা

  2. C ভাষায় ক্যারেক্টার অপারেশন ব্যাখ্যা

  3. সি ভাষায় ইউনিয়ন টু পয়েন্টার ব্যাখ্যা

  4. সি ভাষায় পয়েন্টার অ্যাক্সেসিং ধারণা ব্যাখ্যা