C फ़ाइल प्रबंधन
एक फ़ाइल का उपयोग लगातार डेटा की एक बड़ी मात्रा को संग्रहीत करने के लिए किया जा सकता है। कई अन्य भाषाओं की तरह 'C' निम्नलिखित फ़ाइल प्रबंधन कार्य प्रदान करता है,
- एक फ़ाइल का निर्माण
- एक फ़ाइल खोलना
- एक फ़ाइल पढ़ना
- एक फ़ाइल के लिए लेखन
- फ़ाइल बंद करना
'C' में उपलब्ध सबसे महत्वपूर्ण फ़ाइल प्रबंधन कार्य निम्नलिखित हैं:
समारोह | उद्देश्य |
फोपेन () | फ़ाइल बनाना या मौजूदा फ़ाइल खोलना |
Fclose () | फ़ाइल बंद करना |
fprintf () | किसी फ़ाइल में डेटा का ब्लॉक लिखना |
fscanf () | एक फ़ाइल से एक ब्लॉक डेटा पढ़ना |
गेटक () | एक फ़ाइल से एक ही चरित्र पढ़ता है |
putc () | किसी एकल वर्ण को एक फ़ाइल में लिखता है |
getw () | किसी फ़ाइल से पूर्णांक पढ़ता है |
डाल दिया () | किसी फ़ाइल में पूर्णांक लिखना |
fseek () | किसी निर्दिष्ट स्थान पर फ़ाइल पॉइंटर की स्थिति सेट करता है |
फुटेल () | फ़ाइल पॉइंटर की वर्तमान स्थिति लौटाता है |
रिवाइंड () | फ़ाइल की शुरुआत में फ़ाइल पॉइंटर सेट करता है |
इस ट्यूटोरियल में, आप सीखेंगे-
- फ़ाइल कैसे बनाएँ
- फ़ाइल को कैसे बंद करें:
- एक फ़ाइल के लिए लेखन
- fputc () फ़ंक्शन:
- fputs () फ़ंक्शन:
- fprintf () फ़ंक्शन:
- फ़ाइल से डेटा पढ़ना
- इंटरएक्टिव फ़ाइल पढ़ें और लिखें getc और putc के साथ
फ़ाइल कैसे बनाएँ
जब भी आप किसी फ़ाइल के साथ काम करना चाहते हैं, तो पहला कदम फ़ाइल बनाना है। एक फ़ाइल एक मेमोरी में कुछ भी नहीं है, जहां डेटा संग्रहीत है।
वाक्य रचना के बाद 'C' प्रोग्राम में फाइल बनाने के लिए प्रयोग किया जाता है,
FILE *fp;fp = fopen ("file_name", "mode");
उपरोक्त सिंटैक्स में, फ़ाइल एक डेटा संरचना है जिसे मानक पुस्तकालय में परिभाषित किया गया है।
fopen एक मानक फ़ंक्शन है जिसका उपयोग किसी फ़ाइल को खोलने के लिए किया जाता है।
- यदि फ़ाइल सिस्टम पर मौजूद नहीं है, तो इसे बनाया जाता है और फिर खोला जाता है।
- यदि सिस्टम पर कोई फ़ाइल पहले से मौजूद है, तो यह सीधे इस फ़ंक्शन का उपयोग करके खोला जाता है।
fp एक फाइल पॉइंटर है जो टाइप फाइल की ओर इशारा करता है।
जब भी आप कोई फ़ाइल खोलते या बनाते हैं, तो आपको यह निर्दिष्ट करना होगा कि आप फ़ाइल के साथ क्या करने जा रहे हैं। 'सी' प्रोग्रामिंग में एक फ़ाइल को पढ़ने / लिखने के उद्देश्यों के लिए बनाया या खोला जा सकता है। एक मोड का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि क्या आप नीचे दिए गए किसी भी उद्देश्य के लिए एक फ़ाइल खोलना चाहते हैं। निम्नलिखित 'C' प्रोग्रामिंग में विभिन्न प्रकार के मोड हैं जो एक फ़ाइल के साथ काम करते समय उपयोग किए जा सकते हैं।
फ़ाइल मोड | विवरण |
आर | पढ़ने के लिए एक फ़ाइल खोलें। यदि कोई फ़ाइल रीडिंग मोड में है, तो एक सिस्टम पर एक फ़ाइल पहले से मौजूद होने पर कोई डेटा डिलीट नहीं होता है। |
w | लिखने के लिए एक फ़ाइल खोलें। यदि कोई फाइल राइटिंग मोड में है, तो एक फाइल मौजूद नहीं होने पर एक नई फाइल बनाई जाती है। यदि कोई फ़ाइल पहले से ही किसी सिस्टम पर मौजूद है, तो फ़ाइल के अंदर का सारा डेटा काट दिया जाता है, और इसे लेखन उद्देश्यों के लिए खोला जाता है। |
ए | एपेंड मोड में एक फाइल खोलें। यदि कोई फ़ाइल परिशिष्ट मोड में है, तो फ़ाइल खोली जाती है। फ़ाइल के भीतर की सामग्री नहीं बदलती है। |
आर + | शुरू से पढ़ने और लिखने के लिए खुला |
w + | पढ़ने और लिखने के लिए खुला है, एक फ़ाइल को ओवरराइट कर रहा है |
ए + | पढ़ने और लिखने के लिए खुला है, फ़ाइल में संलग्न है |
दिए गए वाक्यविन्यास में, फ़ाइल नाम और मोड को स्ट्रिंग के रूप में निर्दिष्ट किया जाता है, इसलिए उन्हें हमेशा दोहरे उद्धरण चिह्नों में संलग्न किया जाना चाहिए।
उदाहरण:
#includeint main() {FILE *fp;fp = fopen ("data.txt", "w");}
आउटपुट:
फ़ाइल उसी फ़ोल्डर में बनाई गई है जहाँ आपने अपना कोड सहेजा है।
आप उस पथ को निर्दिष्ट कर सकते हैं जहाँ आप अपनी फ़ाइल बनाना चाहते हैं
#includeint main() {FILE *fp;fp = fopen ("D://data.txt", "w");}
किसी फ़ाइल को कैसे बंद करें
जब भी फ़ाइल पर कार्रवाई समाप्त हो जाए, तो किसी को हमेशा एक फ़ाइल बंद करनी चाहिए। इसका मतलब है कि फ़ाइल के लिए सामग्री और लिंक समाप्त हो गए हैं। यह फ़ाइल को आकस्मिक क्षति से बचाता है।
'C' फाइल क्लोजिंग ऑपरेशन करने के लिए fclose फंक्शन प्रदान करता है। Fclose का सिंटैक्स निम्नानुसार है,
fclose (file_pointer);
उदाहरण:
FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);
फ़ेकलोज़ फ़ंक्शन एक फ़ाइल पॉइंटर को एक तर्क के रूप में लेता है। फाइल पॉइंटर से जुड़ी फाइल को फिर फाल्कोस फंक्शन की मदद से बंद कर दिया जाता है। यदि रिटर्न सफल था और फ़ाइल बंद करते समय कोई त्रुटि हुई है तो यह EOF (फ़ाइल का अंत) है।
फाइल को बंद करने के बाद, उसी फाइल पॉइंटर को अन्य फाइलों के साथ भी इस्तेमाल किया जा सकता है।
'C' प्रोग्रामिंग में प्रोग्राम समाप्त होने पर फाइलें अपने आप बंद हो जाती हैं। फेकलॉज फ़ंक्शन लिखकर मैन्युअल रूप से एक फ़ाइल को बंद करना एक अच्छा प्रोग्रामिंग अभ्यास है।
एक फ़ाइल के लिए लेखन
C में, जब आप किसी फ़ाइल में लिखते हैं, तो newline वर्ण '\ n' को स्पष्ट रूप से जोड़ा जाना चाहिए।
Stdio लाइब्रेरी फ़ाइल में लिखने के लिए आवश्यक कार्य प्रदान करती है:
- fputc (char, file_pointer) : यह file_pointer द्वारा बताई गई फ़ाइल के लिए एक चरित्र लिखता है।
- fputs (str, file_pointer) : यह file_pointer द्वारा बताई गई फ़ाइल के लिए एक स्ट्रिंग लिखता है।
- fprintf (file_pointer, str, variable_lists) : यह file_pointer द्वारा बताई गई फ़ाइल के लिए एक स्ट्रिंग प्रिंट करता है। स्ट्रिंग वैकल्पिक रूप से प्रारूप विनिर्देशक और चर चर_ सूची की सूची में शामिल कर सकते हैं।
नीचे दिए गए कार्यक्रम से पता चलता है कि फ़ाइल में लेखन कैसे करें:
fputc () फ़ंक्शन:
#includeint main() {int i;FILE * fptr;char fn[50];char str[] = "Guru99 Rocks\n";fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"for (i = 0; str[i] != '\n'; i++) {/* write to file using fputc() function */fputc(str[i], fptr);}fclose(fptr);return 0;}
आउटपुट:
उपरोक्त कार्यक्रम fputc_test.txt फ़ाइल में एक एकल वर्ण लिखता है जब तक कि यह अगली पंक्ति के प्रतीक "\ n" तक नहीं पहुंचता जो इंगित करता है कि वाक्य सफलतापूर्वक लिखा गया था। प्रक्रिया सरणी के प्रत्येक चरित्र को लेना है और इसे फ़ाइल में लिखना है।
- उपरोक्त कार्यक्रम में, हमने एक लिखित मोड में fputc_test.txt नामक एक फाइल बनाई और खोली है और हमारे स्ट्रिंग को घोषित किया है जो फ़ाइल में लिखा जाएगा।
- हम लूप के लिए कैरेक्टर राइट ऑपरेशन का एक कैरेक्टर करते हैं और अपनी फाइल में तब तक हर कैरेक्टर को डालते हैं, जब तक कि "\ n" कैरेक्टर का सामना नहीं हो जाता, तब तक फाइल को फाल्कोस फंक्शन का इस्तेमाल करके बंद कर दिया जाता है।
fputs () फ़ंक्शन:
#includeint main() {FILE * fp;fp = fopen("fputs_test.txt", "w+");fputs("This is Guru99 Tutorial on fputs,", fp);fputs("We don't need to use for loop\n", fp);fputs("Easier than fputc function\n", fp);fclose(fp);return (0);}
OUTPUT:
- उपरोक्त कार्यक्रम में, हमने एक फाइल मोड में fputs_test.txt नामक एक फाइल बनाई और खोली है।
- बाद में हम तीन अलग-अलग तार लिखकर fputs () फ़ंक्शन का उपयोग करके एक लिखित ऑपरेशन करते हैं
- फिर फ़ाइल को फाल्कोस फ़ंक्शन का उपयोग करके बंद कर दिया जाता है।
fprintf () फ़ंक्शन:
#includeint main() {FILE *fptr;fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"/* write to file */fprintf(fptr, "Learning C with Guru99\n");fclose(fptr);return 0;}
OUTPUT:
- उपर्युक्त कार्यक्रम में हमने एक लेखन मोड में fprintf_test.txt नामक एक फ़ाइल बनाई और खोली।
- स्ट्रिंग लिखने के बाद fprintf () फ़ंक्शन का उपयोग करके लेखन ऑपरेशन किया जाता है, फिर फ़ाइल को fclose फ़ंक्शन का उपयोग करके बंद कर दिया जाता है।
फ़ाइल से डेटा पढ़ना
फ़ाइल से डेटा पढ़ने के लिए समर्पित तीन अलग-अलग कार्य हैं
- fgetc (file_pointer): यह फ़ाइल पॉइंटर द्वारा बताई गई फ़ाइल से अगला वर्ण लौटाता है। जब फ़ाइल का अंत हो गया है, तो EOF को वापस भेज दिया जाता है।
- fgets (बफर, n, file_pointer): यह फ़ाइल से n-1 वर्ण पढ़ता है और स्ट्रिंग को एक बफर में संग्रहीत करता है जिसमें NULL वर्ण '\ 0' को अंतिम वर्ण के रूप में जोड़ा जाता है।
- fscanf (file_pointer, conversion_specifiers, variable_adresses) : इसका उपयोग डेटा को पार्स और विश्लेषण करने के लिए किया जाता है। यह फ़ाइल से वर्णों को पढ़ता है और इनपुट को परिवर्तनीय बिंदुओं का उपयोग करके परिवर्तनीय बिंदुओं के वेरिएबल_एड्रेस की सूची प्रदान करता है। ध्यान रखें कि स्कैनफ़ के साथ, स्पेस या न्यूलाइन का सामना करने पर fscanf एक स्ट्रिंग पढ़ना बंद कर देता है।
निम्न कार्यक्रम क्रमशः fgetss_test.txt फ़ाइल से रीडिंग (), fscanf () और fgetc () फ़ंक्शंस का उपयोग करके प्रदर्शित करता है:
#includeint main() {FILE * file_pointer;char buffer[30], c;file_pointer = fopen("fprintf_test.txt", "r");printf("----read a line----\n");fgets(buffer, 50, file_pointer);printf("%s\n", buffer);printf("----read and parse data----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerchar str1[10], str2[2], str3[20], str4[2];fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);printf("Read String1 |%s|\n", str1);printf("Read String2 |%s|\n", str2);printf("Read String3 |%s|\n", str3);printf("Read String4 |%s|\n", str4);printf("----read the entire file----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerwhile ((c = getc(file_pointer)) != EOF) printf("%c", c);fclose(file_pointer);return 0;}
परिणाम:
----read a line----Learning C with Guru99----read and parse data----Read String1 |Learning|Read String2 |C|Read String3 |with|Read String4 |Guru99|----read the entire file----Learning C with Guru99
- उपरोक्त कार्यक्रम में, हमने "fprintf_test.txt" नामक फ़ाइल खोली है, जिसे पहले fprintf () फ़ंक्शन का उपयोग करके लिखा गया था, और इसमें "Learning99 with Guru99" स्ट्रिंग शामिल है। हम इसे फेज़ () फ़ंक्शन का उपयोग करके पढ़ते हैं जो लाइन द्वारा लाइन पढ़ता है जहां पूरी लाइन को संभालने के लिए बफर आकार पर्याप्त होना चाहिए।
- हम फ़ाइल की शुरुआत में इंगित करने के लिए पॉइंटर फ़ाइल को रीसेट करने के लिए फ़ाइल को फिर से खोलते हैं। प्रत्येक शब्द को अलग से संभालने के लिए विभिन्न स्ट्रिंग चर बनाएं। उनकी सामग्री देखने के लिए चर प्रिंट करें। Fscanf () का उपयोग मुख्य रूप से फाइल से डेटा निकालने और पार्स करने के लिए किया जाता है।
- फ़ाइल की शुरुआत में इंगित करने के लिए पॉइंटर फ़ाइल को रीसेट करने के लिए फ़ाइल को फिर से खोलें। डेटा पढ़ें और इसे फ़ाइल चरित्र से गेटक () फ़ंक्शन का उपयोग करके प्रिंट करें जब तक कि ईओएफ स्टेटमेंट का सामना न किया जाए
- विभिन्न वेरिएंट का उपयोग करके रीडिंग ऑपरेशन फाइल करने के बाद, हमने फिर से फाइल को फेकलोज फ़ंक्शन का उपयोग करके बंद कर दिया।
इंटरएक्टिव फ़ाइल पढ़ें और लिखें getc और putc के साथ
ये सबसे सरल फ़ाइल ऑपरेशन हैं। गेटक चरित्र पाने के लिए खड़ा है, और पुट चरित्र डालने के लिए खड़ा है। इन दोनों कार्यों का उपयोग एक समय में केवल एक वर्ण को संभालने के लिए किया जाता है।
निम्नलिखित कार्यक्रम 'सी' प्रोग्रामिंग में फ़ाइल हैंडलिंग कार्यों को प्रदर्शित करता है:
#includeint main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = fopen("demo.txt", "r");while ((c = getc(fp)) != EOF) {printf("%c", c);}fclose(fp);return 0;}
आउटपुट:
- उपर्युक्त कार्यक्रम में हमने एक फाइल बनाई है और डेमो मोड नामक एक फाइल खोली है।
- एक लिखित ऑपरेशन किया जाता है, उसके बाद फाइल को फालोज फंक्शन का उपयोग करके बंद कर दिया जाता है।
- हमने फिर से एक फ़ाइल खोली है जिसमें अब रीडिंग मोड में डेटा है। एक लूप निष्पादित करेगा जब तक कि ईओएफ नहीं मिला। एक बार फ़ाइल के अंत में पाया जाता है कि ऑपरेशन समाप्त हो जाएगा और प्रिंटफ फ़ंक्शन का उपयोग करके डेटा प्रदर्शित किया जाएगा।
- रीडिंग ऑपरेशन करने के बाद फ़ाइल को फिर से बंद कर दिया जाता है।
सारांश
- एक फ़ाइल एक मेमोरी में एक जगह है जहां डेटा संग्रहीत किया जाता है।
- 'C' प्रोग्रामिंग एक फ़ाइल से निपटने के लिए विभिन्न कार्य प्रदान करती है।
- फाइलों के साथ छेड़छाड़ करने वाले तंत्र को फाइल प्रबंधन कहा जाता है।
- उस पर परिचालन करने से पहले एक फ़ाइल खोली जानी चाहिए।
- फाइल को रीड, राइट या अपेंड मोड में खोला जा सकता है।
- एकल चरित्र को पढ़ने और लिखने के लिए Getc और putc फ़ंक्शन का उपयोग किया जाता है।
- फ़ंक्शन fscanf () फ़ाइल से डेटा पढ़ने और पार्स करने की अनुमति देता है
- हम EOF के सामने आने तक सभी फ़ाइल को कवर करने के लिए लूप करके एक पूरी फ़ाइल ( getc फ़ंक्शन का उपयोग करके ) पढ़ सकते हैं
- हम फंक्शनप्रिंट () का उपयोग करके इसका नाम बनाने के बाद एक फाइल पर लिख सकते हैं और इसमें स्ट्रिंग टेक्स्ट के अंत में न्यूलाइन कैरेक्टर होना चाहिए।