फाइल क्या होते है? – What is File
File, बाइट्स का एक संग्रह है जो डिस्क जैसे सेकेंडरी स्टोरेज
डिवाइस पर स्टोर होता है। एक सिस्टम में दो तरह की फाइलें होती हैं -:
- Text
file
- Binary
file
#1. Text File
-:
Text files सामान्य .txt फ़ाइलें होती हैं। इन टेक्स्ट
फाइल्स को बनाना काफी आसान है |
आप किसी भी साधारण टेक्स्ट एडिटर
जैसे नोटपैड का उपयोग करके आसानी से इन टेक्स्ट फाइलों को बना सकते हैं
जब आप इन टेक्स्ट फाइल्स को ओपन
करेंगे तब आप फ़ाइल के सभी Content
को plain text के रूप में देखेंगे। आप चाहे तो इन कंटेंट को आसानी से Edit या डिलीट कर सकते हैं।
#2. Binary Files -:
आपके कंप्यूटर में .bin नाम से कोई न कोई फाइल जरुरु होगी | ये जो .bin फाइल है उसे ही बाइनरी फाइल कहते है |
बाइनरी फाइल्स, plain text में इनफार्मेशन स्टोर करने के बजाय बाइनरी नंबर्स ( 0 और 1) के फॉर्म में
इनफार्मेशन स्टोर करते है |
इन बाइनरी फाइल्स में हम ज्यादा मात्रा में डेटा
स्टोर कर सकते है | चूँकि इन बाइनरी फाइल्स में इनफार्मेशन बाइनरी फॉर्म ( 0 और 1 के रूप में )
होता है इसलिए इन्हे आसानी से पढ़ा नहीं जा सकता | ये redable नहीं होते |
फाइल हैंडलिंग क्या है? (File Handling in C in Hindi)
सी
लैंग्वेज में किसी भी वेरिएबल को मेमोरी तब मिलती है जब प्रोग्राम रैम में आता है | चूँकि प्रोग्राम को
रैम में मेमोरी मिलती है और रैम एक वोलेटाइल मेमोरी है इसलिए प्रोग्राम के रैम से
बहार जाते ही प्रोग्राम का सारा डेटा नष्ट हो जाता है |
जैसे ही प्रोग्राम रैम से निकलता
है वेरिएबल को मिला मेमोरी स्पेस भी deallocate हो जाता है |
ऐसे में यदि हम इन वेरिएबल्स में
स्टोर वैल्यू को परमानेंट स्टोर करके रखना चाहेंगे तो नहीं रख पाएंगे क्योकि
वेरिएबल की लाइफ ज्यादा से ज्यादा प्रोग्राम के लाइफ के बराबर होती है जैसे ही
प्रोग्राम समाप्त होता है वैसे ही वेरिएबल भी समाप्त हो जाते है |
यदि हम वेरिएबल में स्टोर वैल्यू
को प्रोग्राम समाप्त होने के बाद भी चाहते है तब इसके लिए हमे इन वेरिएबल में
स्टोर वैल्यू को पर्मानेंटे स्टोरेज मेमोरी (जैसे कि हार्डडिस्क के अंदर फाइल्स के
रूप में) स्टोर करना पड़ेगा |
ऐसा करने के लिए हमें अपने
प्रोग्राम में कुछ ऐसे कोड लिखने होंगे जिससे की वेरिएबल के अंदर का डेटा सेकेंडरी
स्टोरेज में स्थित फाइल के अंदर सेव हो जाये और जब हम ऐसा करते है तो इसे ही फाइल हैंडलिंग जाहते है |
फाइल हैंडलिंग एक ऐसा तरीका है
जिसमे हम प्रोग्राम के डेटा को डिस्क फाइल्स में परमानेंटली स्टोर कर सकते है |
फाइल हैंडलिंग के द्वारा हम
प्रोग्राम में वेरिएबल्स के अंदर स्थित डेटा को सेकेंडरी स्टोरेज में आसानी से
फाइल्स के अंदर स्टोर कर सकते है और हम इन फाइल्स के अंदर के डेटा हो वेरिएबल में
असाइन करके पुनः उपयोग कर सकते है |
सी लैंग्वेज में फाइल हैंडलिंग
के द्वारा हम आसानी से फाइल्स को create, update, read, और delete कर सकते है |
फाइल हैंडलिंग को मुख्यतः तो
केटेगरी में बाँटा जा सकता है -:
- High
level (standard files or stream oriented files)
- Low-level(system
oriented files)
High level file
handling लाइब्रेरी फंक्शन्स द्वारा मैनेज
किया जाता है और Low-level file
handling सिस्टम कॉल्स द्वारा मैनेज किया
जाता है |
High level फ़ाइल हैंडलिंग का उपयोग आमतौर पर किया जाता है क्योंकि
इसे मैनेज करना आसान होता है |
फाइल हैंडलिंग के लिए
हमे अपने प्रोग्राम में कई सारे फाइल फंक्शन और ऑपरेशन्स का उपयोग करना पड़ता है |
आइयें
जाते है उन फाइल फंक्शन और ऑपरेशन्स के बारे में |
Functions
Use In File Handling
Function |
description |
fopen() |
नया फाइल बनाने या पहले से बने फाइल को ओपन
करने के लिए | |
fclose() |
फाइल को क्लोज करने के लिए | |
getc() |
फाइल से करैक्टर को पढ़ने के लिए | |
putc() |
फाइल में करैक्टर write करने के लिए | |
fscanf() |
फाइल से सेट ऑफ़ डेटा रीड करने के लिए | |
fprintf() |
फाइल में सेट ऑफ डेटा लिखने करने के लिए | |
getw() |
फाइल से इन्टिजर रीड करने के लिए | |
putw() |
फाइल में इन्टिजर Write करने के लिए |
fseek() |
स्थिति को वांछित बिंदु पर सेट करने के लिए | |
ftell() |
फाइल में वर्तमान स्थिति प्रदान करने के लिए | |
rewind() |
स्थिति को फाइल के शुरुवात में सेट करने के
लिए | |
ऊपर मैंने अभी जितने भी फंक्शन्स
के बारे में बताया है ये सभी फंक्शन्स फाइल हैंडलिंग में उपयोग होने वाले फंक्शन
थे जिनका उपयोग निचे हम प्रोग्राम बनाते समय करने वाले है |
ऐसा हो सकता
है कि आपको अभी इन फंक्शन्स का उपयोग अच्छे से समझ न आया हो मगर आगे जब हम फाइल
हैंडलिंग के बारे में पढ़ेंगे तब आपको इन सभी फंक्शन के बारे में अच्छे से जानकारी
हो जाएगी |
यदि आपको इन
फंक्शन के उपयोग के बारे में अलग से आर्टिकल चाहिए तो निचे कमेंट में बताये यदि
ज्यादा लोगो का comment आता है तो मैं इन फंक्शन के बारे
में अलग से आर्टिल्स लिखकर बताऊंगा |
आइये अब हम
कुछ फाइल ऑपरेशन्स के बारे में जान लेते है |
File Operations
सी लैंग्वेज
में हम निम्न तरह के फाइल ऑपरेशन परफॉर्म करते है -:
- Creation
of a new file
- Opening
an existing file
- Reading
from file
- Writing
to a file
- Moving
to a specific location in a file
- Closing
a file
Opening or Creation of a new
file
सी लैंग्वेज
में फाइल्स बनाने या बने हुए फाइल्स को ओपन करने के लिए fopen() फंक्शन का उपयोग किया जाता है | fopen() फंक्शन, stdio.h नाम के हैडर फाइल में डिफाइंड है
| इसका सिंटेक्स कुछ ऐसा होता है
-:
Syntax
-:
FILE *fp;
fp =
fopen("file_name","mode");
- यहाँ fp एक FILE पॉइंटर है जो fopen() द्वारा ओपन किये जाने वाले फाइल को पॉइंट करेगा |
- FILE एक स्ट्रक्चर है जो फाइल से सम्बंधित इनफार्मेशन जैसे – name, size, buffer size, current position, end
of file आदि Contain
करता है |
- file_name – यहाँ पर उस फाइल का नाम
आएगा जिसे हम ओपन करना चाहते है |
mode – फाइल में हम कौन सा ऑपरेशन (जैसे read ,write ,update) करना चाहते है
इसके हिसाब से हम mode तय करते है |
Example
FILE *fp;
fp =
fopen(“fileName.txt”, “w”)
यहाँ इस उदाहरण में fileName.txt उस फाइल का नाम है जिसे हम ओपन करना चाहते है और w फाइल ओपनिंग
मोड है जो बताता है कि इस फाइल को हम write ऑपरेशन परफॉर्म करने के लिए ओपन
कर रहे है |
सी लैंग्वेज में हमारे पास अलग
अलग कंडीशन के हिसाफ से अलग अलग फाइल ओपनिंग मोड है जिनका अपना अपना उद्देश्य है
आइये जानते है इन opening mode के बारे में |
File Opening Modes In C
Mode |
Description |
r |
opens a text file in read mode |
w |
opens a text file in write mode |
a |
opens a text file in append mode |
r+ |
opens a text file in read and
write mode |
w+ |
opens a text file in read and
write mode |
a+ |
opens a text file in read and
write mode |
rb |
opens a binary file in read mode |
wb |
opens a binary file in write mode |
ab |
opens a binary file in append mode |
rb+ |
opens a binary file in read and
write mode |
wb+ |
opens a binary file in read and
write mode |
ab+ |
opens a binary file in read and
write mode |
तो दोस्तों ये कुछ फाइल ओपनिंग mode थे जिसे हम fopen()
फंक्शन के साथ उपयोग करते है |
इन फाइल ओपनिंग मोड के बारे में
और अच्छे से जानने के लिए आप निचे दिए गए वीडियो को एक बार जरूर देखे क्योकि आगे
जो मैं आपको बताने वाला हूँ उसको समझने के लिए आपको फाइल ओपनिंग मोड के बारे में
अच्छे से जानकारी जाना जरुरी है |
How fopen() function works
- जब भी हम fopen() Function को कॉल करते
है तब यह सबसे पहले उस फाइल को जिसे आपने fopne() फंक्शन के पैरेंथेसिस में कॉल
करते समय लिखा था उसे आपके कंप्यूटर डिस्क में फाइंड करता है |
- यदि fopen()
फंक्शन
को वो फाइल मिल जाती है तो वो इस फाइल को डिस्क से बफर स्पेस में लोड करता है
और फिर फाइल को बफर से required मोड में ओपन कर देता है और यदि फाइल नहीं
मिलती तो यह खुद से एक नया फाइल बना देता है और उसे ओपन कर देता है | यह इस नए
फाइल का नाम वही रखता है जैसे आपने इसके पैरेंथेसिस में रखा था |
आइये fopen() फंक्शन के उपयोग को एक उदाहरण से समझते
है |
Example -:
#include <stdio.h>
int main()
{
FILE * fp;
if (fp = fopen("hello.txt", "r"))
{
printf("File opened successfully in read mode");
}
else
printf("The file is not present! cannot create a new file using r mode");
fclose(fp);
return 0;
}
Output -:
The file is not present! cannot create a new file using r mode
Program explanation -:
- इस
प्रोग्राम में हमने सबसे पहले एक fp नाम से एक फाइल पॉइंटर बनाया जो fopen()
फंक्शन
द्वारा ओपन होने वाले फाइल को पॉइंट करता है |
- fopen()
फंक्शन
के द्वारा हमने फाइल को read मोड में ओपन करने की कोशिश की, मगर फाइल
ओपन नहीं हुवा क्योकि हमारे डिस्क में इस नाम से कोई फाइल नहीं था इसलिए फाइल
ओपन नहीं हुवा और result में else वाला स्टेटमेंट रन हुवा |
- यदि इस
फाइल को हम write मोड में ओपन करते तो नया फाइल बन कर ओपन हो जाता. मगर read
मोड
में कोई फाइल तभी ओपन होती है जब वो पहले से हमारे डिस्क में मौजूद हो मगर इस
प्रोग्राम में हमारे डिस्क में इस नाम से कोई फाइल नहीं था इसलिए नया फाइल
नहीं बना |
- प्रोग्राम
के आखिर में हमने fclose() फंक्शन का उपयोग करके फाइल को क्लोज कर
दिया |
Closing a File
जैसे की मैंने आपको ऊपर बताया है, किसी भी फाइल को close करने के लिए fclose() फंक्शन का उपयोग किया जाता है | fclose() के द्वारा हम कसी भी फाइल को आसानी से
बंद कर सकते है |
वैसे तो सी लैंग्वेज में प्रोग्राम समाप्ति के साथ ही फाइल्स
क्लोज हो जाते है Syntax -:
fclose (file_pointer);
Reading from file
किसी फाइल को रीड करने के लिए सबसे पहले उस फाइल को रीड मोड “r” में fopen फंक्शन
द्दारा ओपन करना पड़ता है |
फाइल को ओपन करने के बाद फाइल के अंदर के डेटा को रीड करने के
लिए सी लैंग्वेज में हम कुछ फंक्शन का उपयोग करते है |
- fgetc()
- fgets()
- fscanf()
1. fgetc(file_pointer) -: यह फ़ाइल पॉइंटर
द्वारा इंगित फ़ाइल से अगला करैक्टर रिटर्न करता है। जब यह फ़ाइल के अंत तक पहुँच
जाता है, तब यह फ़ंक्शन EOF (End of File) लौटाता है।
Example -:
#include <stdio.h>
#include <stdlib.h>
int main()
{
/* Pointer to the file */
FILE *fp1;
/* Character variable to read the content of file */
char c;
/* Opening a file in r mode*/
fp1= fopen ("C:\\myprogram.txt", "r");
/* Infinite loop –I have used break to come out of the loop*/
while(1)
{
c = fgetc(fp1);
if(c==EOF)
break;
else
printf("%c", c);
}
fclose(fp1);
return 0;
}
2. fgets() -: यह फ़ाइल से n-1 करैक्टर पढ़ता है और स्ट्रिंग को एक बफर
में संग्रहीत करता है जिसमें NULL करैक्टर ‘\0’ को अंतिम करैक्टर के रूप में जोड़ा जाता
है।
Syntax -:
fgets(buffer, n, file_pointer);
3. fscanf() -: इसका उपयोग डेटा को analyze करने के लिए किया जाता है। यह फ़ाइल से characters को पढ़ता है |
यह scanf फंक्शन की तरह space or newline आने पर रीडिंग बंद कर
देता है |
Syntax -:
fscanf(file_pointer, conversion_specifiers, variable_adresses);
Example -:
FILE *fp
fp = fopen (“file.txt”, “r”);
fscanf (fp, "%s %s %s %d", str1, str2, str3, &date);
Writing to a file
फाइल के अंदर राइटिंग ऑपरेशन परफॉर्म करने के लिए सबसे पहले
आपको उस फाइल को write मोड “w” में ओपन करना होगा |
यदि आप फाइल को किसी दूसरे मोड जैसे “r” मोड में ओपन करते है तो आप फाइल में
राइटिंग ऑपरेशन परफॉर्म नहीं कर सकते यदि आप ऐसा करने की कोशिस करेंगे तो कम्पाइलर
आपको error देगा |
फाइल को write मोड “w” में ओपन करने पर यदि वो फाइल पहले से
आपके डिस्क में मौजूद नहीं है तो fopen() फंक्शन आपके लिए एक
नया फाइल क्रिएट करके उसे ओपन कर देगा और यदि फाइल पहले से मौजूद है तो यह फाइल
में पहले से लिखे डेटा को हटा देगा और नए आने वाले डेटा को फाइल में Enter कर देगा |
फाइल ओपन होने के बाद फाइल में write करने
के लिए fprintf, fputc और fputs फंक्शन का उपयोग किया जाता है |
इन तीनो फंक्शन का कार्य सामान है ये आप पर डिपेंड करता है कि
आप किसका उपयोग करते है |
Example -:
यहाँ मैं आपको fprinf फंक्शन का उपयोग करते
हुए फाइल में write ऑपरेशन परफॉर्म करके
दिखा रहा हु -:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
FILE *fp;
fp = fopen("C:\\myprogram.txt","w");
if(fp == NULL)
{
printf("Error");
exit(1);
}
printf("Enter any character: ");
scanf("%c",&ch);
/* You can also use fputc(ch, fp);*/
fprintf(fp,"%c",ch);
fclose(fp);
return 0;
}
No comments:
Post a Comment