File I/O in C Language in Hindi
File I/O in C Language in Hindi
फाइल एक तरह से कई बाईट का समूह है जो की एक क्रम से होते हैं इनके लिए C में कई तरह के फंक्शन हैं जिनमे कुछ फंक्शन हाई लेवल के हैं तो कुछ ऑपरेटिंग सिस्टम लेवल के हैं जिन्हे लो लेवल फंक्शन भी कहते हैं
Opening File in C language
C लैंग्वेज में fopen() फंक्शन है जिससे हम नयी फाइल क्रिएट कर सकते हैं या पहले से बानी फाइल को ओपन कर सकते हैं
Syntax
FILE *fopen( const char * filename, const char * mode );
यहाँ पर fopen फंक्शन FILE टाइप का ऑब्जेक्ट return करता है यहाँ पर पहला पैरामीटर फाइल का नाम होता है और फाइल क्रिएट होगी या पहली की बनी फाइल ओपन होगी ये दूसरा पैरामीटर decide करता है
Mode | Description |
---|---|
r | फाइल को read के लिए open करते है |
w | इसमें फाइल में write करने के लिए खोलते है अगर फाइल नहीं बनी है तो फाइल बन जाती है और इस फंक्शन में फाइल में शुरुआत से लिखते हैं अगर फाइल में पहले से कुछ स्टोर है तो वो कंटेंट डिलीट हो जाता है |
a | इसमें फाइल में write करने के के लिए खोलते है अगर फाइल नहीं बनी है तो फाइल बन जाती है और इस फंक्शन में फाइल में शुरुआत से लिखते हैं अगर फाइल में पहले से कुछ स्टोर है तो वो डिलीट नहीं होता है और नया कंटेंट उस कंटेंट के बाद में लिखा जाता है या उसको अगर सरल भाषा में कहें तो नया कंटेंट पहले के कंटेंट के append बाद हो जाता है |
r+ | फाइल को read और write के लिए open करते है |
w+ | इसमें फाइल में write और read करने के लिए खोलते है अगर फाइल नहीं बनी है तो फाइल बन जाती है और इस फंक्शन में फाइल में शुरुआत से लिखते हैं अगर फाइल में पहले से कुछ स्टोर है तो वो कंटेंट डिलीट हो जाता है |
a+ | इसमें फाइल में write और read करने के के लिए खोलते है अगर फाइल नहीं बनी है तो फाइल बन जाती है और इस फंक्शन में फाइल में शुरुआत से लिखते हैं अगर फाइल में पहले से कुछ स्टोर है तो वो डिलीट नहीं होता है और नया कंटेंट उस कंटेंट के बाद में लिखा जाता है या उसको अगर सरल भाषा में कहें तो नया कंटेंट पहले के कंटेंट के append बाद हो जाता है पर जब हम फाइल को read करते हैं तब शुरू से करते हैं |
अगर हम बाइनरी फाइल पर काम करने जा रहे हैं तो हमारे मोड कुछ इस प्रकार होंगे
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b" Closing file in C Language C में फाइल को क्लोज करने के लिए fclose() फंक्शन होता है Syntax
int fclose( FILE *fp );
यह फंक्शन फाइल को क्लोज करता है और अगर इस फंक्शन successfully complete होता है तो 0 return करता है नहीं तो EOF return करता है और फाइल क्लोज कर देता है |
यह फंक्शन वास्तव में बफर में जो भी डाटा है उसको फाइल में लिख कर फाइल को क्लोज करके मेमोरी को क्लियर कर देता है।
Writing a File
Syntax
int fputc( int c, FILE *fp );
इस फंक्शन से हम किसी करैक्टर को आउटपुट स्ट्रीम ( यहां fp) में लिखते हैं और यदि यह कार्य सफल है तो करैक्टर लिख जाता है नहीं तो फाइल क्लोज हो जाती है |
int fputs( const char *s, FILE *fp );
इस फंक्शन से हम किसी स्ट्रीम को किसी फाइल में लिख सकते हैं और जब ये सफलता से काम कर देता है तो कोई पॉजिटिव वैल्यू return करता है अन्यथा EOF Return करके फाइल बंद कर देता है
Syntax
int fprintf(FILE *fp,const char *format, ...)
फाइल में लिखने के लिए हम fprintf फंक्शन का इस्तेमाल कर सकते हैं
#include main() { FILE *fp; fp = fopen("c:/test.txt", "w+"); fprintf(fp, "This is testing for fprintf...\n"); fputs("This is testing for fputs...\n", fp); fclose(fp); }
इससे C ड्राइव में test.txt नाम की फाइल बन जायगी
Reading a File in C
C language में फाइल रीड करने के कई तरीके हैं या तो एक एक करैक्टर रीड करें या फिर एक पूरी स्ट्रीम में रीड करें एक एक करैक्टर रीड करने के लिए fgetc() फंक्शन है और स्ट्रीम में रीड करने के लिए fgets() फंक्शन है इसके आलावा fscanf() फंक्शन भी है पर इस फंक्शन से हम तभी तक रीड कर सकते हैं जब तक स्पेस नहीं आता।
syntax fgetc()
int fgetc( FILE * fp );
इस फंक्शन से हम एक बार में एक करैक्टर उस फाइल से रीड कर सकते हैं जिसका रिफरेन्स यहां fp के नाम से दिया गया है या एरर होने पर EOF return करता है
syntax fgets()
char *fgets( char *buf, int n, FILE *fp );
इस फंक्शन से हम उस फाइल से जिसका रेफ़्रेन्स fp के नाम से दिया गया है से n-1 करैक्टर रीड करके एक करैक्टर buf में स्टोर करके अंत में NULL करैक्टर लगा देता है
Syntax fscanf()
int fscanf(FILE *fp, const char *format, ...)
इस फंक्शन से हम किसी फाइल से तब तक रीड कर सकते हैं जब तक इसको स्पेस नहीं मिलता
example
content in test.txt
——————–
This is testing text file in c.
This is another testing text file in c.
——————
#include <stdio.h> main() { FILE *fp; char buff[255]; fp = fopen("c:/test.txt", "r"); fscanf(fp, "%s", buff); printf("1 : %s\n", buff ); fgets(buff, 255, (FILE*)fp); printf("2: %s\n", buff ); fgets(buff, 255, (FILE*)fp); printf("3: %s\n", buff ); fclose(fp); } output
- This
- This is testing text file in c.
- This is another testing text file in c.
इसमें पहली बार जब fscanf से रीड करते हैं तब स्पेस आते ही रीड करना बंद हो जाता है और printf फंक्शन सिर्फ को प्रिंट करता है अगले स्टेटमेंट में उसके आगे की लाइन fgets फंक्शन रीड करके buff वेरिएबल में स्टोर कर देता है इस लिए उस printf फंक्शन से उसको प्रिंट करने पर बाकि लाइन प्रिंट हो जाती है
जब दूसरी बार fgets फंक्शन कॉल होता है तब कर्सर फाइल test.txt की दूसरी लाइन के स्टार्ट में होता है इस लिए इस बार हम इस फंक्शन से पूरी लाइन रीड कर सकते हैं इसलिए तीसरे प्रिंट में पूरी लाइन प्रिंट होती है
Binary I/O Functions
C language में दो फंक्शन और भी हैं जिनसे हम किसी फाइल से बाइनरी इनपुट और आउटपुट कर सकते हैं
size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file); size_t fwrite(const void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
इन दोनों ही फंक्शन से ज्यादा डाटा रीड या राइट करने का काम होता है।