fseek() and ftell() Functions

fseek() Function

Syntax: fseek( fp, offset, Position );

ये Function हमें File के एक Record से दूसरे Record पर लाने व ले जाने का काम करता है। ये Function तीन Arguments लेता है:

  • इस Function में पहले Argument के रूप में Open किए गए File का File Pointer होता है।
  • दूसरे Argument के रूप में हमें “C” Compiler को ये बताना होता है, कि File Pointer को File में कितना Byte आगे या पीछे ले जाना है। यदि Minus ( – ) चिन्ह का प्रयोग किया जाता है, तो File Pointer अपनी Current Position से पीछे की तरफ Move होता है। ये एक long int प्रकार का मान होता है। यहां जो संख्‍या लिख दी जाती है, File Pointer File में उतने ही Byte Move होता है।
  • तीसरे Argument के रूप में हम SEEK_END, SEEK_CUR या SEEK_SET नाम के तीन Macros में से किसी एक को आवश्‍यकतानुसार Use करना होता है। ये Argument File Pointer को क्रमश: File के अंत, File की वर्तमान Location या File की शुरूआत पर ले जाता है। यदि हम SEEK_END Use करते हैं, तो File Pointer File के अंत में पहुंच जाता है। यदि हम SEEK_SET करते हैं, तो File Pointer File की शुरूआत पर चला जाता है और यदि हम SEEK_CUR करते हैं, तो File Pointer अपनी वर्तमान स्थिति पर ही रहता है। ये तीनों Macros हैं और इन्हे h नाम की Header File में Define किया गया है। यदि हम चाहें तो SEEK_SET के स्थान पर 0, SEEK_CUR के स्थान पर 1 व SEEK_END के स्थान पर अंक 2 का भी प्रयोग कर सकते हैं। (fseek() and ftell() Functions – Wiki)

 

ftell() Function

Syntax: tot_bytes = ftell ( fp );

ये Function File Pointer की Current Position बताता है। जब हम File को Binary Mode में Open करते हैं, तब ये Function कुल Use हो रही Bytes को बताता है। fwrite() हमेंशा वहां से File में Data लिखना शुरू करता है, जहां पर Currently File Pointer होता है। उसी प्रकार से fread() File में वहां से Data Reading शुरू करता है, जहां पर Currently File Pointer होता है।

यदि हम ये जानना चाहते हैं कि Currently File Pointer File में कहां पर स्थित है या File में कितने Bytes का Data लिखा जा चुका है, तो हम इस Function को Use करके इसका पता लगा सकते हैं। ये Function long int प्रकार का मान return करता है। यदि ये Function successful काम नहीं करता है, तो -1 Return करता है।

किसी भी File में एक विशेष प्रकार का Data एक क्रम में Store किया जाता है। जैसे हम किसी File में int प्रकार के Data Store कर रहे हैं, तो File में किसी खास Data को खोजने के लिए ये जरूरी होता है, कि हम fseek() Function में Offset का मान 2 रखें क्योंकि File में Store होने वाला Data int प्रकार का है, जो कि Memory में 2 Bytes की जगह लेता है।

यदि हम ये मान 2 के बजाय 1 रखेंगे, तो File से सही प्रकार से Data Output में प्राप्त नहीं होगा। क्योंकि यदि हमने File में Data fwrite() Function द्वारा Input किया है, तो हर Data दो Byte के स्थान में Store होगा। ऐसे में हम यदि offset का मान 1 रखेंगे, तो दो Byte का Data एक Byte के रूप में प्राप्त नहीं किया जा सकेगा।

यदि हमने किसी File में किसी Record को Structure द्वारा Input किया है और उसी File से जब Data प्राप्त करना हो या किसी विशेष Record को Search करना हो, तो ये जरूरी हो जाता है कि हम fseek() Function में offset के स्थान पर उस Structure की पूरी size लिखें, ताकि जब fseek() Function मे File Pointer Move हो, तब वह हर Movement में एक Record आगे या पीछे Move हो।

यदि हम offset के स्थान पर Structure की size नहीं लिखते और Offset के स्थान पर माना कोई संख्‍या जैसे 6 लिख देते हैं, तो Output में हमें सही Record कभी प्राप्त नहीं होगा, क्योंकि हो सकता है, कि Structure से जो Data File में Write हो रहा है, उसकी Size 18 Bytes हो। ऐसे में File Pointer क्रम से 6-6 Bytes की Location पर Point करेगा और हमें हमारा वांछित परिणाम प्राप्त नहीं होगा क्योंकि हमारा Record तो 6-6 Bytes के तीन भागों में बंट चुका होगा।

किसी भी समय हमें ये पता नहीं होता है, कि fseek() Function का प्रयोग करते समय offset का मान क्या रखा जाए। इसलिए हमें हमेंशा sizeof() Operator के प्रयोग से fseek() Function को खुद ही कुल Offset का मान तय करने देना चाहिये। ऐसा करने के लिए हमें उस Variable का नाम sizeof() Operator के Function मे Argument के रूप में दे देना चाहिये। जैसा कि पूर्व के प्रोग्राम में Structure प्रकार के Variable e को fread() व fwrite() Function में sizeof(e) लिख कर Use किया गया है। (fseek() and ftell() Functions – Wiki)

Buy this eBook to read more about “File System in C

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS