C भाषा में फाइल आई/ओ File I/O in C


C भाषा में फाइल आई/ओ File I/O  in C


C programming language में File I/O (Input/Output) का उपयोग file से data को read और write करने के लिए किया जाता है। File I/O operations standard input/output (stdio.h) library के साथ संबंधित होते हैं।

File I/O के लिए, निम्नलिखित 3 स्टेप्स का उपयोग किया जाता है:

File को open करें
File से read/write करें
File को close करें

File को open करने के लिए, fopen() function का उपयोग किया जाता है। fopen() function file name और file mode के लिए arguments का उपयोग करता है। File mode निम्नलिखित हो सकते हैं:

Mode Description
r Read mode
w Write mode
a Append mode

File से read/write करने के लिए, fread(), fwrite(), fscanf(), और fprintf() functions का उपयोग किया जाता है। इन functions का उपयोग data को format करने और file में write करने के लिए किया जाता है।

File को close करने के लिए, fclose() function का उपयोग किया जाता है। यह function file को close करता है जिससे memory leaks का सामना नहीं करना पड़ता है।

उदाहरण:
फ़ाइल में write करने के लिए:

#include <stdio.h>
#include <string.h>

    int main () {
    FILE *fp;

    fp = fopen("file.txt", "w");

    fprintf(fp, "This is writing to file using fprintf function");
    fputs("\nThis is writing to file using fputs function", fp);

    fclose(fp);

    return 0;
}

फ़ाइल से read करने के लिए:

#include <stdio.h>
#include <string.h>

int main () {
    FILE *fp;
    char buff[255];

    fp = fopen("file.txt", "r");

    fscanf(fp, "%s", buff);
    printf("1 : %s\n", buff );

    fgets(buff, 255, (FILE*)fp);
    printf("2: %s\n", buff );

    fclose(fp);

    return 0;
}

Files Open करना

C भाषा में फ़ाइलों को open करने के लिए fopen() function का उपयोग किया जाता है। इसका सिंटैक्स निम्नलिखित है।

FILE *fopen(const char *filename, const char *mode);

यह function दो string arguments लेता है, पहला argument फ़ाइल का नाम दर्शाता है और दूसरा argument उन तरीकों के लिए जो फ़ाइल में डेटा को ऑपरेट करने के लिए उपयोग किया जाएगा।

उपलब्ध mode निम्न हो सकते हैं:

"r": फ़ाइल को पढ़ने के लिए खोलें।
"w": फ़ाइल में लिखने के लिए खोलें। यदि फ़ाइल मौजूद नहीं है तो नई फ़ाइल बनाई जाएगी।
"a": फ़ाइल के आखरी में डेटा जोड़ने के लिए खोलें। यदि फ़ाइल मौजूद नहीं है तो नई फ़ाइल बनाई जाएगी।
"r+": फ़ाइल को पढ़ने और लिखने के लिए खोलें।
"w+": फ़ाइल में लिखने और पढ़ने के लिए खोलें। यदि फ़ाइल मौजूद नहीं है तो नई फ़ाइल बनाई जाएगी।
"a+": फ़ाइल के आखरी में डेटा जोड़ने और पढ़ने के लिए खोलें।

File Close करना

एक फ़ाइल को बंद करने के लिए fclose() फ़ंक्शन का उपयोग किया जाता है। यह फ़ंक्शन दो तरीकों से फ़ाइल को बंद कर सकती है:

int fclose(FILE *fp); - यह फ़ंक्शन फ़ाइल बंद करती है जो fp द्वारा दिखाई दी जाती है। यह फ़ंक्शन शामिली फ़ाइल संरचना के लिए आवश्यक रिसोर्स रिलीज करता है। यदि फ़ाइल सफलतापूर्वक बंद होती है तो फ़ंक्शन 0 वापस करती है, अन्यथा EOF (-1) वापस करती है।

void fcloseall(); - यह फ़ंक्शन सभी खुली फ़ाइलों को बंद करती है जो वर्तमान में इस प्रोग्राम में खुले हुए हैं। यह फ़ंक्शन एक रिटर्न वैल्यू नहीं देती है।

इस तरह से, fclose() फ़ंक्शन का उपयोग फ़ाइल संरचनाओं के लिए रिसोर्स रिलीज करने के लिए किया जाता है।

File Write करना 

फ़ाइल में डेटा लिखने के लिए, fprintf() फ़ंक्शन का उपयोग किया जाता है। यह एक प्रिंटफ़ के समान होता है लेकिन इसके बजाय कंसोल पर प्रिंटफ़, यह फ़ाइल में डेटा लिखता है।

इसका उपयोग इस प्रकार किया जाता है:

#include <stdio.h>

int main() {
    FILE *fp;
    char str[] = "यह फ़ाइल में लिखा हुआ डेटा है।\n";

    fp = fopen("test.txt", "w"); // test.txt नाम की फ़ाइल खोलें
    fprintf(fp, "%s", str); // फ़ाइल में डेटा लिखें
    fclose(fp); // फ़ाइल बंद करें

    return 0;
}

इस मिसाल में, test.txt नाम की फ़ाइल खोली गई है, fprintf() फ़ंक्शन का उपयोग करके इसमें टेक्स्ट लिखा गया है, और फिर फ़ाइल को बंद कर दिया गया है।

यदि फ़ाइल पहले से मौजूद है, तो "w" अनुभवी मान्यताओं के साथ fopen() के बजाय "a" (append) अनुभवी मान्यताओं का उपयोग किया जा सकता है। इससे फ़ाइल खोलते समय मौजूदा डेटा नष्ट नहीं होता है बल्कि नए डेटा को फ़ाइल के अंत में जोड़ा जाता है।

fp = fopen("test.txt", "a");

File read करना 

C भाषा में, फ़ाइल से डेटा पढ़ने के लिए fopen() फ़ंक्शन का उपयोग किया जाता है जो फ़ाइल को खोलता है। फ़ाइल को खोलने के बाद, फ़ाइल से डेटा पढ़ने के लिए विभिन्न फ़ंक्शन उपलब्ध होते हैं।

fgets() फ़ंक्शन फ़ाइल से एक लाइन पढ़ता है और इसे बफ़र में स्टोर करता है। fscanf() फ़ंक्शन फ़ाइल से विशिष्ट डेटा पढ़ता है और इसे विभिन्न प्रकार की मुद्रित स्ट्रिंग में स्टोर करता है। अंत में, fgetc() फ़ंक्शन फ़ाइल से एक करैक्टर पढ़ता है और इसे स्टोर करता है।

इन फ़ंक्शन के बाद, फ़ाइल को बंद करने के लिए fclose() फ़ंक्शन का उपयोग किया जाता है।

इस तरह का कोड निम्नलिखित है:

#include <stdio.h>

int main() {
    FILE *fp;
    char ch;

    fp = fopen("test.txt", "r");

    while ((ch = fgetc(fp)) != EOF) {
        printf("%c", ch);
    }

    fclose(fp);
    return 0;
}

यह कोड "test.txt" नाम के फ़ाइल से डेटा पढ़ता है और उसे एक चिह्न स्ट्रिंग में मुद्रित करता है। फ़ाइल से पढ़ने के बाद, फ़ाइल को बंद कर दिया जाता है।

फाइल open, read, write का उदाहरण

फ़ाइल से संबंधित फ़ंक्शंस का उपयोग फ़ाइल से संबंधित ऑपरेशन को करने के लिए किया जाता है। नीचे दिए गए उदाहरण में, हम एक टेक्स्ट फ़ाइल को खोलना, उसमें डेटा लिखना और उसमें से डेटा पढ़ना सीखेंगे।

फ़ाइल खोलना (Opening a file) का उदाहरण

फ़ाइल को खोलने के लिए हम fopen() फ़ंक्शन का उपयोग करते हैं। यह फ़ंक्शन दो पैरामीटर लेती हैं: फ़ाइल का नाम और ऑपरेशन जो हम फ़ाइल पर करना चाहते हैं। जैसे कि, फ़ाइल को पढ़ने के लिए "r" और फ़ाइल में लिखने के लिए "w" ऑपरेशन का उपयोग किया जाता है।

#include <stdio.h>

int main() {
    FILE *filePointer;

    // फ़ाइल खोलना
    filePointer = fopen("sample.txt", "w");

    // फ़ाइल को सफलतापूर्वक खोलने की जांच करें
    if (filePointer == NULL) {
        printf("File failed to open.");
    }
    else {
        printf("File opened successfully.");

        // फ़ाइल बंद करें
        fclose(filePointer);
    }

    return 0;
}

इस उदाहरण में, "sample.txt" नाम की फ़ाइल को "w" ऑपरेशन के साथ खोला गया है। fopen() फ़ंक्शन FILE * वेरिएबल को लौटाता है जिसे हम अन्य फ़ंक्शंस में उपयोग करते हैं

फाइल write का उदाहरण

फ़ाइल में डेटा लिखने के लिए C भाषा में fprintf() और fputc() जैसे कई फ़ंक्शन्स हैं।

fprintf() फ़ंक्शन, फ़ाइल में फ़ॉर्मेटेड डेटा लिखने के लिए उपयोग की जाती है। यह फ़ंक्शन printf() फ़ंक्शन के तरह काम करता है, लेकिन यह डेटा फ़ाइल में लिखता है। इसकी संक्षिप्त रूप से यह सिंटेक्स होती है:

fprintf(file_pointer, "format string", argument_list);

यहां, file_pointer उस फ़ाइल का पॉइंटर है जिसमें आप डेटा लिखना चाहते हैं, "format string" एक फ़ॉर्मेट शब्द स्ट्रिंग होती है जो आप लिखना चाहते हैं और argument_list उन वेरिएबल्स की सूची होती है जो आप लिखना चाहते हैं। उदाहरण के लिए, यदि आप fprintf() का उपयोग करके फ़ाइल में एक नंबर लिखना चाहते हैं, तो आप इस तरह से कोड लिख सकते हैं:

#include <stdio.h>

int main() {
    int num = 42;
    FILE *fp;

    fp = fopen("example.txt", "w");
    if (fp == NULL) {
        printf("Error opening the file.\n");
        return 1;
    }

    fprintf(fp, "The number is: %d\n", num);
    fclose(fp);
    return 0;
}

इसमें, "example.txt" फ़ाइल को लिखने के लिए खोला जाता है। फ़ाइल सफलतापूर्वक खोलने के बाद, fprintf() के उपयोग से एक संख्या को लिख दिया जाता है

फाइल read का उदाहरण

फाइल से डेटा पढ़ने के लिए, C भाषा में fread() फ़ंक्शन का उपयोग किया जाता है। यह फ़ंक्शन फाइल से डेटा पढ़ता है और उसे इस्तेमाल करने के लिए उपलब्ध करवाता है।

यहाँ एक उदाहरण दिया गया है, जिसमें एक फ़ाइल बनाई गई है जिसमें 5 नंबर हैं। हम इस फ़ाइल से नंबर पढ़ेंगे और उन्हें स्क्रीन पर प्रिंट करेंगे।

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fptr;
    int arr[5];
    int n;

    fptr = fopen("numbers.dat", "rb"); // फाइल खोलना

    if (fptr == NULL)
    {
        printf("Error opening file\n");
        exit(1);
    }

    n = fread(arr, sizeof(int), 5, fptr); // फाइल से डेटा पढ़ना

    printf("Read %d numbers from file:\n", n);
    for (int i = 0; i < n; i++)
    {
        printf("%d\n", arr[i]);
    }

    fclose(fptr); // फाइल बंद करना

    return 0;
}

इस उदाहरण में, हमने fread() फ़ंक्शन का उपयोग करके फ़ाइल से डेटा पढ़ा है। यह फ़ंक्शन फ़ाइल से int डेटा को पढ़ता है और उसे arr नामक एक एरे में संग्रहीत करता है। fread() फ़ंक्शन का पहला पैरामीटर arr है, जिसे हम फ़ाइल से पढ़ना चाहते हैं, दूसरा पैरामीटर sizeof(int) है, जो एक int का आकार होता है,

फाइल का उदाहरण

एक उदाहरण के माध्यम से C भाषा में फ़ाइल को समझने की कोशिश करते हैं।

इस उदाहरण में, हम एक नयी फाइल बनाने वाले हैं, इसमें कुछ टेक्स्ट लिखेंगे और फिर उसी फाइल से उस टेक्स्ट को पढ़ेंगे।

फाइल बनाने के लिए हम fopen() फ़ंक्शन का उपयोग करते हैं। यह फ़ंक्शन दो पैरामीटर लेता हैं, एक फ़ाइल का नाम और फ़ाइल के लिए खोलने का तरीका (जैसे लेखन के लिए खोलना, पढ़ने के लिए खोलना, और तोड़ने के लिए खोलना आदि)।

फ़ाइल बनाने के लिए निम्नलिखित कोड का उपयोग किया जा सकता है:

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp;
    fp = fopen("example.txt", "w");
    if (fp == NULL) {
    printf("Error opening file\n");
    exit(1);
    }
    fprintf(fp, "This is an example file.\n");
    fclose(fp);
    return 0;
}

यहां, हमने fopen() का उपयोग करके एक नयी फ़ाइल example.txt बनाई हैं और fprintf() का उपयोग करके उसमें कुछ टेक्स्ट लिखा हैं। फिर हमने फाइल को बंद कर दिया हैं उसके बाद, हम fopen() का उपयोग करते हुए example.txt फ़ाइल से उस टेक्स्ट को पढ़ते हैं।

निम्नलिखित उदाहरण में हम एक टेक्स्ट फ़ाइल से डेटा पढ़ने का तरीका देखेंगे:

यदि हमारे पास फ़ाइल "example.txt" है जो निम्नलिखित पाठक्रम का होता है:

Hello, World!
This is an example file.

फाइल को खोलने के लिए हम फ़ाइल का नाम example.txt और मोड r (read) पास करते हुए fopen() का उपयोग कर सकते हैं।

#include <stdio.h>

int main() {
    FILE *fp;
    char ch;

    fp = fopen("example.txt", "r");

    if (fp == NULL) {
        printf("Could not open file");
        return 0;
    }

    while ((ch = fgetc(fp)) != EOF) {
        printf("%c", ch);
    }

    fclose(fp);
    return 0;
}

इस उदाहरण में, हम फ़ाइल पॉइंटर fp घोषित करते हैं और उसे फ़ाइल example.txt को मोड r में खोलने के लिए fopen() के साथ संबंधित फ़ाइल नाम देते हैं।

fopen() का पहला विशेषता वहाँ का फ़ाइल नाम होता है जिसे आप खोलना चाहते हैं और दूसरा विशेषता फ़ाइल के लिए मोड होता है। यहाँ, हमने फ़ाइल को रीड करने के लिए मोड r का उपयोग किया है।

फ़ाइल के बारे में जानकारी प्राप्त करने के बाद, हम एक वही फ़ाइल के साथ संबंधित सभी डेटा को fgetc() का उपयोग करके पढ़ते हैं।

Binary I/O Functions 

बाइनरी I/O functions का उपयोग binary data (जो कि 0 और 1 के संगठन से बना होता है) को file में read और write करने के लिए किया जाता है। इन functions का उपयोग binary data के लिए किया जाता है, जो text data की तुलना में संगठित नहीं होता है।

ये functions C programming language में इनबिल्ट functions होते हैं। इनमें से कुछ प्रमुख functions हैं:

fread(): file से binary data को read करने के लिए।
fwrite(): binary data को file में write करने के लिए।
fseek() - यह function file pointer को set करने के लिए उपयोग किया जाता है। इसके द्वारा, हम फ़ाइल के किसी भी position पर जाकर data को read या write कर सकते हैं।

ftell() - यह function current file position को return करता है।

इन functions के अलावा, binary data को file में seek करने के लिए fseek() function का भी उपयोग किया जाता है।

बाइनरी I/O functions का उपयोग binary data को file में read और write करने के लिए किया जाता है, जैसे images, audio files, video files, और executable files आदि।

उदाहरण के लिए, यदि हम binary data को फ़ाइल में write करना चाहते हैं, तो हम निम्नलिखित code का उपयोग कर सकते हैं:

#include <stdio.h>

int main() {
    FILE *file_pointer;
    int numbers[5] = {1, 2, 3, 4, 5};

    // open file for writing in binary mode
    file_pointer = fopen("data.bin", "wb");

    // write data to file
    fwrite(numbers, sizeof(int), 5, file_pointer);

    // close file
    fclose(file_pointer);

    return 0;
}

यह code numbers array के binary data को "data.bin" फ़ाइल में write करता है। समान रूप से, हम फ़ाइल से binary data को read करने के लिए भी fread() function का उपयोग कर सकते हैं।