Sunday, March 1, 2020

File I/O in C programming with examples in hindi

इस मार्गदर्शिका में, हम सीखेंगे कि C प्रोग्रामिंग भाषा का उपयोग करके किसी फ़ाइल पर इनपुट / आउटपुट (I / O) संचालन कैसे किया जाए।

इससे पहले कि हम प्रत्येक ऑपरेशन पर विस्तार से चर्चा करें, एक सरल सी प्रोग्राम लेते हैं:

c_in_hindi
c programming in hindi


A Simple C Program to open, read and close the file

#include <stdio.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:\\myfiles\\newfile.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;
}
उपरोक्त कार्यक्रम में, हम आर मोड में एक नया फ़ाइल खोल रहे हैं। फाइल की सामग्री को पढ़कर और इसे कंसोल पर प्रदर्शित करें। प्रत्येक ऑपरेशन को विस्तार से समझने की सुविधा देता है:

1. एक फ़ाइल खोलना (Opening a file)


फ़ाइल खोलने के लिए fopen () फ़ंक्शन का उपयोग किया जाता है।

Syntax:

FILE pointer_name = fopen ("file_name", "Mode");

pointer_name आपकी पसंद का कुछ भी हो सकता है।
file_name फ़ाइल का नाम है, जिसे आप खोलना चाहते हैं। "C: \\ myfiles \\ newfile.txt" जैसे पूर्ण पथ यहाँ निर्दिष्ट करें।

फ़ाइल खोलते समय, आपको मोड निर्दिष्ट करना होगा। किसी फ़ाइल को पढ़ने के लिए हम जिस मोड का उपयोग करते हैं, वह "r" है, जो "केवल मोड पढ़ें" है। 


FILE  *fp;
fp = fopen("C:\\myfiles\\newfile.txt", "r");

पहले वर्ण का पता पॉइंटर fp में संग्रहीत है।

कैसे जांचें कि फाइल सफलतापूर्वक खोली गई है?
यदि फ़ाइल सफलतापूर्वक नहीं खुलती है, तो पॉइंटर को एक NULL मान दिया जाएगा, ताकि आप इस तरह से तर्क लिख सकें:
यह कोड यह जांच करेगा कि फ़ाइल सफलतापूर्वक खोला गया है या नहीं। यदि फ़ाइल नहीं खुलती है, तो यह उपयोगकर्ता को एक त्रुटि संदेश प्रदर्शित करेगा

..
FILE fpr;
fpr = fopen("C:\\myfiles\\newfile.txt", "r");
if (fpr == NULL)
{
    puts("Error while opening file");
    exit();
}

विभिन्न फ़ाइल खोलने के मोड(Various File Opening Modes):


फ़ाइल को फोपेन () फ़ंक्शन का उपयोग करके खोला जाता है, खोलते समय आप आवश्यकता के अनुसार निम्न में से किसी भी मोड का उपयोग कर सकते हैं।
Mode “r”: यह एक रीड ओनली मोड है, जिसका अर्थ है कि अगर फाइल को आर मोड में खोला जाता है, तो यह आपको इसकी सामग्री लिखने और संशोधित करने की अनुमति नहीं देता है। जब fopen () फ़ाइल को सफलतापूर्वक खोलता है तो यह फ़ाइल के पहले वर्ण का पता देता है, अन्यथा यह NULL देता है।Mode “w”: यह केवल एक लेखन मोड है। फ़ोपेन () फ़ंक्शन एक नई फ़ाइल बनाता है जब निर्दिष्ट फ़ाइल मौजूद नहीं होती है और यदि यह फ़ाइल खोलने में विफल रहती है तो यह NULL को लौटा देती है।Mode “a”: इस मोड का उपयोग करके सामग्री को किसी मौजूदा फ़ाइल के अंत में जोड़ा जा सकता है। यदि मोड "w" की तरह, fopen () एक नई फ़ाइल बनाता है यदि वह मौजूद नहीं है। असफल ओपन पर यह NULL देता है।

फ़ाइल पॉइंटर को इंगित करता है: फ़ाइल का अंतिम वर्ण।
Mode “r+”: यह मोड मोड "आर" के समान है; हालाँकि आप इस मोड में खोली गई फ़ाइल पर विभिन्न ऑपरेशन कर सकते हैं। आपको "r +" मोड में खोले गए फ़ाइल की सामग्री को पढ़ने, लिखने और संशोधित करने की अनुमति है।

फ़ाइल पॉइंटर को इंगित करता है: फ़ाइल का पहला वर्ण।
Mode “w+”: संचालन के अलावा मोड "w" के समान, जिसे प्रदर्शन किया जा सकता है; फ़ाइल को इस मोड में पढ़ा, लिखा और संशोधित किया जा सकता है।

Mode “a+”: मोड "ए" के रूप में ही; आप फ़ाइल में डेटा पढ़ और संलग्न कर सकते हैं, हालांकि इस मोड में सामग्री संशोधन की अनुमति नहीं है।

2. एक फ़ाइल पढ़ना (Reading a File)


फ़ाइल को पढ़ने के लिए, हमें पहले किसी भी मोड का उपयोग करके इसे खोलना होगा, उदाहरण के लिए यदि आप केवल फ़ाइल को पढ़ना चाहते हैं, तो इसे "आर" मोड में खोलें। फ़ाइल खोलने के दौरान चयनित मोड के आधार पर, हमें फ़ाइल पर कुछ संचालन करने की अनुमति है।

सी एक फ़ाइल को पढ़ने के लिए कार्यक्रम (C Program to read a file):


fgetc( ): यह फ़ंक्शन कैरेक्टर को पॉइंटर पॉइंटर की पोजीशन से पढ़ता है और सफल रीड होने पर पॉइंटर को फाइल के अगले कैरेक्टर में ले जाता है। एक बार पॉइंटर्स फ़ाइल के अंत तक पहुँच जाता है, यह फ़ंक्शन EOF (फ़ाइल का अंत) लौटाता है। हमने फ़ाइल के अंत को निर्धारित करने के लिए अपने कार्यक्रम में ईओएफ का उपयोग किया है। 


#include <stdio.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:\\myfiles\\newfile.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;
}

3. एक फ़ाइल के लिए लेखन (Writing to a file)


फ़ाइल लिखने के लिए, हमें फ़ाइल को एक मोड में खोलना होगा जो लेखन का समर्थन करता है। उदाहरण के लिए, यदि आप "आर" मोड में फ़ाइल खोलते हैं, तो आप फ़ाइल को लिखने में सक्षम नहीं होंगे क्योंकि "आर" केवल पढ़ने के लिए अनुमति देने वाले मोड को पढ़ा जाता है।

उदाहरण: C प्रोग्राम फ़ाइल लिखने के लिए (Example: C Program to write the file)


यह कार्यक्रम उपयोगकर्ता को एक चरित्र दर्ज करने के लिए कहता है और फ़ाइल के अंत में उस चरित्र को लिखता है। यदि फ़ाइल मौजूद नहीं है, तो यह प्रोग्राम निर्दिष्ट नाम के साथ एक फ़ाइल बनाएगा और फ़ाइल में इनपुट वर्ण लिखेगा। 


#include <stdio.h>
int main()
{
   char ch;
   FILE *fpw;
   fpw = fopen("C:\\newfile.txt","w");

   if(fpw == NULL)
   {
      printf("Error");   
      exit(1);             
   }

   printf("Enter any character: ");
   scanf("%c",&ch);

   /* You can also use fputc(ch, fpw);*/
   fprintf(fpw,"%c",ch);
   fclose(fpw);

   return 0;
}

4. Closing a file

fclose(fp);

किसी खुली हुई फ़ाइल को बंद करने के लिए fclose () फ़ंक्शन का उपयोग किया जाता है। एक तर्क के रूप में आपको उस फ़ाइल को एक संकेतक प्रदान करना होगा जिसे आप बंद करना चाहते हैं।

An example to show Open, read, write and close operation in C

#include <stdio.h>
int main()
{
    char ch;

    /* Pointer for both the file*/
    FILE *fpr, *fpw;
    /* Opening file FILE1.C in “r” mode for reading */
    fpr = fopen("C:\\file1.txt", "r");

    /* Ensure FILE1.C opened successfully*/
    if (fpr == NULL)
    {
         puts("Input file cannot be opened");
    }

    /* Opening file FILE2.C in “w” mode for writing*/
    fpw= fopen("C:\\file2.txt", "w");

    /* Ensure FILE2.C opened successfully*/
    if (fpw == NULL)
    {
       puts("Output file cannot be opened");
    }

    /*Read & Write Logic*/
    while(1)
    {
        ch = fgetc(fpr);
        if (ch==EOF)
            break;
        else
            fputc(ch, fpw);
    }

    /* Closing both the files */
    fclose(fpr);
    fclose(fpw);

    return 0;
}

 How to read/ write (I/O) Strings in Files – fgets & fputs

यहां हम चर्चा करेंगे कि फाइल में स्ट्रिंग्स को कैसे पढ़ें और लिखें। 

char *fgets(char *s, int rec_len, FILE *fpr)

s: Array of characters to store strings.
rec_len: Length of the input record.
fpr: Pointer to the input file.
Lets take an example:

Example to read the strings from a file in C programming

#include <stdio.h>
int main()
{
    FILE *fpr;
    /*Char array to store string */
    char str[100];
    /*Opening the file in "r" mode*/
    fpr = fopen("C:\\mynewtextfile.txt", "r");

    /*Error handling for file open*/
    if (fpr == NULL)
    {
       puts("Issue in opening the input file");
    }

    /*Loop for reading the file till end*/
    while(1)
    {
       if(fgets(str, 10, fpr) ==NULL)
            break;
       else
            printf("%s", str);
    }
    /*Closing the input file after reading*/
    fclose(fpr);
    return 0;
}
In the above example we have used fgets function like this:

fgets(str, 10, fpr)


यहाँ str स्ट्रिंग (char की सरणी) का प्रतिनिधित्व करता है जिसमें आप इसे फाइल से पढ़ने के बाद स्ट्रिंग को स्टोर कर रहे हैं।
10 स्ट्रिंग की लंबाई है जिसे हर बार पढ़ने की आवश्यकता होती है।
fpr फाइल करने के लिए पॉइंटर है, जो पढ़ने वाला है।

मैं क्यों इस्तेमाल किया अगर (fgets (str, 10, fpr) == फ़ाइल के अंत का निर्धारण करने के लिए एक तर्क के रूप में?
उपरोक्त उदाहरणों में, हमने फ़ाइल का अंत जानने के लिए ch == EOF का उपयोग किया है। यहाँ हमने इस तर्क का उपयोग किया है क्योंकि जब कोई और रिकॉर्ड पढ़ने के लिए उपलब्ध नहीं होता है तो फॉक्स रिटर्न NULL देता है। 


C Program – Writing string to a file

int fputs ( const char * s, FILE * fpw );

char *s – Array of char.
FILE *fpw – Pointer (of FILE type) to the file, which is going to be written.
#include <stdio.h>
int main()
{
     FILE *fpw;

     /*Char array to store strings */
     char str[100];

     /*Opening the file FILEW.TXT in "w" mode for writing*/
     fpw = fopen("C:\\mynewtextfile2.txt", "w");

     /*Error handling for output file*/
     if (fpw== NULL)
     {
          puts("Issue in opening the Output file");
     }

     printf("Enter your string:");

     /*Stored the input string into array – str*/
     gets(str);

     /* Copied the content of str into file – 
      * mynewtextfile2.txt using pointer – fpw
      */
     fputs(str, fpw);

     /*Closing the Output file after successful writing*/
     fclose(fpw);
     return 0;
}
fputs takes two arguments –

fputs(str, fpw)

str - str उस सरणी को दर्शाता है, जिसमें स्ट्रिंग संग्रहीत है।
fpw - आउटपुट फाइल के लिए FILE पॉइंटर, जिसमें रिकॉर्ड लिखना होगा।

विवादों पर ध्यान देने की बात:
डिफ़ॉल्ट रूप से fputs प्रत्येक रिकॉर्ड को लिखने के बाद नई पंक्ति नहीं जोड़ते हैं, ऐसा मैन्युअल रूप से करने के लिए - फ़ाइल में प्रत्येक लिखने के बाद आपके पास निम्न कथन हो सकता है।

fputs("\n", fpw);

सी फाईल I / O बाइनरी फ़ाइलों के लिए (C FILE I/O for Binary files)


अब तक, हमने पाठ फ़ाइलों पर फ़ाइल संचालन सीखा है, क्या होगा यदि फाइलें बाइनरी हैं (जैसे कि .exe फ़ाइल)। उपरोक्त कार्यक्रम बाइनरी फ़ाइलों के लिए काम नहीं करेंगे, हालांकि बाइनरी फ़ाइलों को संभालने में एक मामूली बदलाव है। मुख्य अंतर फ़ाइल नाम और मोड है। इसे एक उदाहरण की मदद से समझते हैं। आइए कहते हैं कि मेरे पास दो बाइनरी फाइलें हैं। Bin1.exe & bin2.exe - मैं bin1.exe की सामग्री को bin2.exe पर कॉपी करना चाहता हूं:

Example: Reading and Writing Binary Files in C

#include <stdio.h>
int main()
{
    char ch;

    /* Pointers for both binary files*/
    FILE *fpbr, *fpbw;

    /* Open for bin1.exe file in rb mode */
    fpbr = fopen("bin1.exe", "rb");

    /* test logic for successful open*/
    if (fpbr == NULL)
    {
        puts("Input Binary file is having issues while opening");
    }

    /* Opening file bin2.exe in “wb” mode for writing*/
    fpbw= fopen("bin2.exe", "wb");

    /* Ensure bin2.exe opened successfully*/
    if (fpbw == NULL)
    {
       puts("Output binary file is having issues while opening");
    }

    /*Read & Write Logic for binary files*/
    while(1)
    {
        ch = fgetc(fpbr);
        if (ch==EOF)
             break;
         else
             fputc(ch, fpbw);
     }

     /* Closing both the binary files */
     fclose(fpbr);
     fclose(fpbw);

     return 0;
}


0 Comments:

Post a Comment