File Handling in C: किसी भी Program का आधारभूत अवयव Data होता है। यानी जो भी Program लिखे जाते हैं वे इसीलिए लिखे जाते हैं ताकि User उसे उपयोग में लेकर अपनी सूचनाओं को Store करके रख सके और उस सूचना का अपनी आवश्यकतानुसार भविष्य में भी उपयोग कर सकें।
अभी तक हमने जो भी Program बनाए हैं, उनमें से किसी भी Program द्वारा कोई Data Hard Disk पर Store नही हुआ है। इस Chapter में हम ऐसे Program बनाना सीखेंगे,जिससे हम हमारे Data को किसी file के रूप में, किसी Storage Device मे store करके रख सकें। हम हमारे Data को दो तरीकों से Storage Device में store करके रख सकते हैं। या तो हम किसी बने बनाए Application Software का उपयोग करके उसमें अपने Data को Store कर लें या फिर आवश्यकतानुसार खुद की जरूरतों को पूरा करने के लिए अपनी खुद की Data File बनाए ।
“C” में ऐसी सुविधा है कि हम हमारे बनाए गए Programs के Data को hard Disk पर Store करके रख सकते हैं और आवश्यकता होने पर पुन: प्राप्त कर सकते हैं। इस Chapter में हम “C” में File Management (File Handling in C – Wiki) के बारे में ही पढेंगे।
किसी भी Data File की कुछ मूलभूत जरूरतें होती हैं। जैसे किसी File में नया data जोडना, या किसी पुराने Data को Modify करना या किसी Data को Delete करना। जब हमें किसी “C” Program द्वारा प्राप्त Output को या Input किये गए Data को Hard disk पर Store करके रखना होता है, तब हमें “C” में एक Data File Create करनी पडती है।
Program द्वारा हम जो भी Data Input करते हैं या जो भी Data Output के रूप में हमें प्राप्त होता है, यदि उसे Hard Disk में भविष्य के उपयोग के लिए सुरिक्षत करके रखना हो तो Data File create करना जरूरी होता है।
सर्वप्रथम हमें ये तय करना होता है कि हम किस काम के लिए Data File Create करना चाहते हैं। जब हम ये तय कर लेते हैं तब एक Data File Create की जाती है। उस Data File की पहचान के लिए उस Data File को कोई नाम देना जरूरी होता है। अब ये तय करना होता है कि उस Data File में हम Data लिखना चाहते हैं या पहले से लिखे Data को पढना चाहते हैं। यानी File को किस Mode में Open करना है और अंत में File को बंद करना होता है।
File Handling in C – Opening a File
इससे पहले कि हम किसी सूचना को लिख या पढ सकें, हमें file को Open करना होगा। कोई भी File, जिसमें हम कुछ लिखना या पढना चाहते हैं, Open करने पर Operating System व Program के बीच एक Link बनता है। Operating System व हमारे Program के बीच जो Link बनता है, वह Link एक Structure होता है, जिसे FILE नाम दिया गया है। ये Structure stdio.h नाम की एक Header file में Define किया गया है। इसलिए जब भी हमें किसी File के साथ काम करना हो तो हमें ये Header file अपने Program में Include करना जरूरी होता है। कोई भी File Open करने के लिए हमें निम्न Statement लिखना होता है:
FILE *fp;
ये Statement fp नाम का एक FILE प्रकार का Pointer Declare करता है। हम जितनी भी File Open करते हैं, उस हर File का एक अलग FILE Structure होता है। इस FILE Structure में File से सम्बंधित सारी जानकारी होती है, कि File कब Create की गई है। FILE की Current Size क्या है, File किस Memory Location पर स्थित है, आदि।
वास्तव में FILE का एक Character प्रकार का Pointer होता है, जो कि उस File के Read या Write होने वाले प्रथम Character को Point करता है। यहां fp एक Pointer Variable है, जिसमें Structure FILE का Address Stored है। File Pointer के Declaration के बाद अब हमें File Open करने के लिए fopen() Function का प्रयोग करना पडता है। इस Function में हमें Argument के रूप में दो parameters देने होते हैं:
- Open की जाने वाली File का नाम
- Open की जाने वाली File का Opening Mode यानी File को Writing Mode में Open किया जा रहा है या पहले से बनी File को Read करने के लिए या किसी अन्य काम के लिए।
ये दोनों parameters string के रूप में होती हैं, इसलिए इन्हें Double Quote में बंद करके इस Function में लिखा जाता है। माना हम Employee.dat नाम की File खोलना चाहते हैं और ये File पहले से Hard disk पर Stored है, इसलिए इस File को Reading Mode में खोलना चाहते हैं। इस स्थिति में हमें निम्नानुसार Argument देने होते हैं:
fp = fopen( ” Employee.dat “, “r” );
ये Statement तीन काम करता है:
- ये Statement dat नाम की File को Hard disk पर खोजता है।
- यदि Hard Disk पर File हो तो उसे Memory में Load करता है। यदि File काफी बडी हो तो उसे टुकडों में बांट कर क्रम से हर भाग को Memory में Load करता है। यदि Disk पर File ना हो तो ये Function NULL Return करता है। NULL h header file में define किया गया एक macro है, जो ये बताता है कि इस नाम की कोई File Hard Disk पर नहीं है।
- ये एक Character Pointer को Structure FILE के प्रथम character का address दे देता है। यानी ये Pointer उस File के प्रथम character को Point करता है।
जब हम एक File से सम्बंधित सारे काम कर चुके होते हैं, तो Program के अंत में File को Close करना भी जरूरी होता है। File को बंद करने के लिए हमें File Pointer को ही निम्नानुसार Access करना होता है:
fclose ( fp );
fclose() Function कई काम करता है। जब हम कोई File बंद करते हैं, तो सर्व प्रथम Buffer में स्थित सभी Characters Disk पर Write होते हैं। Buffer High level I/O के लिए पहले से ही Define किया गया एक Memory Area है। हम जो कुछ भी किसी File में लिखते हैं, वो सीधे Disk पर जा कर Store नहीं होता, बल्कि Buffer नाम से Reserve की गई Memory में जा कर Store होता है। जब ये Buffer Characters से भर जाता है, तब Buffer से सारा Data एक साथ Disk पर Write हो जाता है।
जब हम File close करते हैं, तब Buffer में चाहे जितने Characters हों यानी Buffer भरा हो या चाहे फिर Buffer में केवल एक ही Character हो, Buffer का सारा Data Disk पर Write हो जाता है। जब File को Close किया जाता है, तब Program Control द्वारा Operating System व हमारे Program के बीच का Link व इस File के लिए Use हो रहा Buffer दोनों Free हो जाते हैं, ताकि इनका प्रयोग किसी अन्य File के लिए हो सके।
File Handling in C – File Opening Modes
fopen() Function के साथ निम्न Modes का प्रयोग करके हम आवश्यकतानुसार किसी File को Open कर सकते हैं। सिर्फ “r” Mode को छोड कर हर Mode में, यदि File Disk पर नही होती है, तो दिये गए नाम की एक नई File Create हो जाती है। यदि File Disk पर नही होती है, तो fopen() Function NULL Return करता है। जबकि यदि File Disk पर होती है, तो उस File को Memory में Load कर देता है।
यदि File काफी बडी हो, तो Program Control File को कई भागों में बांट देता है और क्रम से हर भाग को Memory में Load करता है, साथ ही एक Structure FILE के Pointer Variable pf को File के प्रथम Character का Address प्रदान करता है या फिर ये कह सकते हैं कि एक Program को Setup करता है, जो File के प्रथम Character को Point करता है। File से सम्बंधित विभिन्न Modes निम्नानुसार हैं:
“r” Mode
Program Control File को disk पर खोजता है। यदि File प्राप्त हो जाती है, तो उसे Memory में Load करता है और एक File Pointer को File के प्रथम character को point करने के लिए set up करता है। जब हमें पूर्व में किसी File में लिखे गए Data को Read करना होता है, तब हम File को इस Mode में Open करते हैं।
“w” Mode
Program Control File को disk पर खोजता है। यदि disk पर File हो तो उस File के Data को नए Data से Overwrite कर देता है। यदि Disk पर File नहीें होती है, तो ये दिये गए नाम की एक नई File Create करता है। यदि किसी कारणवश File Open नही हो पाती है, तो ये NULL Return करता है। जब File में कुछ लिखना होता है, तब हम इस Mode का चयन करने हैं।
“a” Mode
Program Control को जब ये Opening Mode प्राप्त होता है, तो Program Control सबसे पहले दिये गए नाम की File को Disk पर खोजता है। यदि File मिल जाती है तो उसे memory में load करता है व एक File pointer को इस File के प्रथम Character का Address देता है। यदि File disk पर नहीं होती है, तो ये string एक नई File Create करता है। इस Mode का प्रयोग तब किया जाता है, जब किसी File के अंत में नए Data जोडने हों।
“r+” Mode
इस Mode का प्रयोग Program में तब किया जाता है, जब किसी File से Data Read करने हों, Data को Modify करना हो या फिर नया Data File में write करना हो।
“w+” Mode
जब इस Mode को use किया जाता है, तब Program Control दिये गए नाम की File को Disk पर खोजता है। यदि Disk पर File स्थित हो, तो ये Mode उस पुरानी File के सारे Data को नष्ट कर देता है। इसका प्रयोग तब किया जाता है, जब हमें File में नया Data Add करना हो, Data को वापस Read करना हो या फिर पुराने Data को Modify करना हो।
“a+” Mode
जब हमें किसी पुरानी File के अंत में नए Data Add करने हों या File को Read करना हो, तब इस Mode को Use किया जाता है। File के data का Modification इस mode में नहीं किया जा सकता है।
किसी भी File में हम जब Data लिख चुके होते हैं तो File का अंत करने के लिए हमें Function Key F6 या ^z Key Combination का Use करना पडता है। इन Special Keys की ASCII Value 26 होती है और ये ASCII अंक 26 किसी भी File के अंत (EOF) को बताती है।
जब भी Program Control को ASCII Value 26 प्राप्त होती है, तो Program Control समझ जाता है कि User ने File में अपना काम पूरा कर लिया है और User इसमें आगे काम नहीं करना चाहता है।
Buy this eBook to read more about “File Handling in C“
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF