প্রথমত, ব্যবহার করার কোনও বিশেষ করে ভাল কারণ নেই fdopen
যদি fopen
একটি বিকল্প নেই এবং open
অন্যান্য সম্ভাব্য পছন্দ। আপনি open
যদি চান তবে প্রথমে আপনার ফাইলটি খুলতে হবে না FILE *
। সুতরাং fdopen
সেই তালিকাটি অন্তর্ভুক্ত করা ভুল এবং বিভ্রান্তিকর কারণ এটি অন্যদের মতো খুব বেশি নয়। আমি এখন এটিকে অগ্রাহ্য করতে এগিয়ে চলেছি কারণ এখানে গুরুত্বপূর্ণ পার্থক্যটি একটি সি স্ট্যান্ডার্ড FILE *
এবং একটি ওএস-নির্দিষ্ট ফাইল বর্ণনাকারীর মধ্যে।
fopen
পরিবর্তে ব্যবহার করার জন্য চারটি প্রধান কারণ রয়েছে open
।
fopen
আপনাকে বাফারিং আইও সরবরাহ করে যা আপনি যা করছেন তার থেকে অনেক দ্রুত হতে পারে open
।
fopen
ফাইলটি বাইনারি মোডে না খুললে লাইন শেষের অনুবাদটি করে, যা আপনার প্রোগ্রামটি যদি কখনও ইউনিক্স-বিহীন পরিবেশে পোর্ট করা থাকে তবে এটি খুব সহায়ক হতে পারে (যদিও বিশ্বটি কেবল এলএফ-তে রূপান্তরিত হয় বলে মনে হচ্ছে (আইইটিএফ পাঠ্য-ভিত্তিক নেটওয়ার্কিং ব্যতীত) প্রোটোকল যেমন এসএমটিপি এবং এইচটিটিপি এবং যেমন))।
- এ
FILE *
আপনাকে ব্যবহার করার ক্ষমতা fscanf
এবং অন্যান্য স্টডিও ফাংশন দেয়।
- আপনার কোডটি একদিন অন্য কোনও প্ল্যাটফর্মের পোর্ট করা হতে পারে যা কেবল এএনএসআই সি সমর্থন করে এবং
open
ফাংশনটি সমর্থন করে না ।
আমার মতে লাইনটি শেষ হওয়া অনুবাদটি প্রায়শই আপনার পথে আসে যা আপনাকে সহায়তা করে এবং তার পার্সিং fscanf
এতটাই দুর্বল যে আপনি অবশ্যম্ভাবীভাবে এটিকে আরও দরকারী কোনও উপকারের পক্ষে টস করতে শুরু করেছিলেন।
এবং বেশিরভাগ প্ল্যাটফর্মগুলি সি সমর্থন করে যা একটি open
ফাংশন রয়েছে।
এটি বাফারিংয়ের প্রশ্ন ছেড়ে দেয়। যে জায়গাগুলিতে আপনি প্রধানত ক্রমানুসারে ফাইল পড়ছেন বা লিখছেন সেখানে বাফারিং সমর্থনটি সত্যিই সহায়ক এবং একটি বড় গতির উন্নতি। তবে এটি কিছু আকর্ষণীয় সমস্যার মধ্যে নিয়ে যেতে পারে যেখানে আপনি যখন এটি আশা করবেন তখন ফাইলটি ডেটা শেষ হয় না। আপনাকে উপযুক্ত সময়ে fclose
বা মনে রাখতে হবে fflush
।
আপনি যদি সিকস করছেন (ওরফে fsetpos
বা fseek
যার দ্বিতীয়টি কোনও মান মেনে চলার উপায়ে ব্যবহার করতে কিছুটা কৌশলযুক্ত), বাফারিংয়ের উপযোগিতা দ্রুত হ্রাস পাবে।
অবশ্যই, আমার পক্ষপাতিত্ব হ'ল আমি সকেটগুলির সাথে পুরোপুরি কাজ করার ঝোঁক করি এবং সেখানে সত্যই আপনি সত্যই নন-ব্লকিং আইও করতে চান (যা FILE *
সম্পূর্ণরূপে কোনও যুক্তিসঙ্গতভাবে সমর্থন করতে ব্যর্থ হয়) বিনা বাধায় with জটিল বিশ্লেষণের প্রয়োজনীয়তাগুলি সত্যিই আমার উপলব্ধিগুলিকে রঙ করে।
fdopen
এবংopen
বাfopen
এবংopen
?