Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्राम में EOF (End of File) समझाया गया

EOF (End of File) क्या है?

EOF इनपुट के अंत को इंगित करता है। यह एक स्थिरांक मैक्रो है (आमतौर पर -1) जो stdio.h में परिभाषित होता है।

  • कीबोर्ड इनपुट में: Windows में Ctrl+Z, Linux/Mac में Ctrl+D दबाने पर EOF उत्पन्न होता है
  • फ़ाइल पढ़ने में: फ़ाइल का अंत पहुंचने पर EOF लौटाया जाता है

एल्गोरिदम

चरण 1: फ़ाइल को लिखने मोड में खोलें
चरण 2: जब तक कैरेक्टर EOF तक न पहुंचे, प्रत्येक कैरेक्टर को फ़ाइल पॉइंटर में लिखें
चरण 3: फ़ाइल बंद करें
चरण 4: फ़ाइल को पढ़ने मोड में फिर से खोलें
चरण 5: फ़ाइल से कैरेक्टर पढ़ें जब तक fp EOF के बराबर न हो
चरण 6: कंसोल पर कैरेक्टर प्रिंट करें
चरण 7: फ़ाइल बंद करें

प्रोग्राम: फ़ाइल में लिखना और पढ़ना (EOF तक)

#include <stdio.h>

int main() {
    char ch;
    FILE *fp;
    
    // लिखने के लिए फ़ाइल खोलें
    fp = fopen("std1.txt", "w");
    if (fp == NULL) {
        printf("फ़ाइल खोलने में त्रुटि!\n");
        return 1;
    }
    
    printf("टेक्स्ट दर्ज करें (Windows: Ctrl+Z, Linux/Mac: Ctrl+D से समाप्त):\n");
    
    // कैरेक्टर दर कैरेक्टर पढ़ें जब तक EOF न मिले
    while ((ch = getchar()) != EOF) {
        putc(ch, fp);  // फ़ाइल में लिखें
    }
    
    fclose(fp);
    
    // पढ़ने के लिए फ़ाइल खोलें
    fp = fopen("std1.txt", "r");
    if (fp == NULL) {
        printf("फ़ाइल खोलने में त्रुटि!\n");
        return 1;
    }
    
    printf("\nफ़ाइल पर टेक्स्ट:\n");
    
    // फ़ाइल से पढ़ें जब तक EOF न मिले
    while ((ch = getc(fp)) != EOF) {
        putchar(ch);  // स्क्रीन पर प्रिंट करें
    }
    
    fclose(fp);
    return 0;
}

आउटपुट

टेक्स्ट दर्ज करें (Windows: Ctrl+Z, Linux/Mac: Ctrl+D से समाप्त):
यह EOF प्रदर्शन उदाहरण है
यदि आपका टेक्स्ट टाइपिंग समाप्त हो गया तो Ctrl+Z दबाएं
^Z

फ़ाइल पर टेक्स्ट:
यह EOF प्रदर्शन उदाहरण है
यदि आपका टेक्स्ट टाइपिंग समाप्त हो गया तो Ctrl+Z दबाएं

महत्वपूर्ण बिंदु

1. EOF एक चर नहीं, int स्थिरांक है

// सही: int का उपयोग करें (EOF -1 हो सकता है, जो char में फिट नहीं होता)
int ch;
while ((ch = getchar()) != EOF) { ... }

// गलत: char का उपयोग (EOF -1, char unsigned हो सकता है → 255)
char ch;
while ((ch = getchar()) != EOF) { ... }  // अनंत लूप संभव!

2. सामान्य फ़ाइल ऑपरेशन पैटर्न

FILE *fp = fopen("file.txt", "r");
if (fp == NULL) { /* त्रुटि संभालें */ }

int ch;
while ((ch = fgetc(fp)) != EOF) {
    // ch प्रोसेस करें
}

fclose(fp);

3. feof() vs EOF जांच


// अनुशंसित: रीड ऑपरेशन की रिटर्न वैल्यू जांचें
while (fgets(buffer, size, fp) != NULL) { ... }

// कम अनुशंसित: feof() लूप के बाद सत्य होता है
while (!feof(fp)) {
    fgets(buffer, size, fp);
    if (feof(fp)) break;  // अतिरिक्त जांच आवश्यक
}

4. बाइनरी फ़ाइलों के लिए

// fread आइटम काउंट लौटाता है, EOF नहीं
while (fread(&item, sizeof(item), 1, fp) == 1) { ... }

व्यावहारिक उदाहरण: फ़ाइल से पूर्णांक पढ़कर योग करना

#include <stdio.h>

int main() {
    FILE *fp = fopen("numbers.txt", "r");
    if (!fp) return 1;
    
    int num, sum = 0, count = 0;
    
    while (fscanf(fp, "%d", &num) == 1) {  // 1 आइटम सफलतापूर्वक पढ़ा गया
        sum += num;
        count++;
    }
    
    printf("कुल संख्याएं: %d\n", count);
    printf("योग: %d\n", sum);
    if (count > 0) printf("औसत: %.2f\n", (float)sum / count);
    
    fclose(fp);
    return 0;
}
  1. C भाषा में putw() और getw() फंक्शन्स C भाषा में putw() और getw() फंक्शन्स

    फाइल रिकॉर्ड्स का संग्रह है या हार्ड डिस्क पर एक स्थान है जहां डेटा स्थायी रूप से संग्रहीत होता है। फाइलों पर ऑपरेशन्स C प्रोग्रामिंग भाषा में फाइलों पर ऑपरेशन्स निम्नलिखित हैं: फाइल का नामकरण फाइल खोलना फाइल से पढ़ना फाइल में लिखना फाइल बंद करना सिंटैक्स फाइल खोलने का सिंटैक्स निम्नलिखित है: F

  1. C भाषा में लूप कंट्रोल स्टेटमेंट्स क्या हैं? फ्लो चार्ट और प्रोग्राम के साथ समझाएं C भाषा में लूप कंट्रोल स्टेटमेंट्स क्या हैं? फ्लो चार्ट और प्रोग्राम के साथ समझाएं

    लूप कंट्रोल स्टेटमेंट्स स्टेटमेंट्स के सेट को दोहराने के लिए उपयोग किए जाते हैं। वे हैं: for लूप while लूप do-while लूप for लूप सिंटैक्स for(initialization; condition; increment/decrement) { // लूप बॉडी } फ्लो चार्ट (Condition पर वापस) आरंभीकरण - आमतौर पर एक असाइनमेंट स्टेटमेंट जो लूप क

  1. C प्रोग्राम में लिंक्ड लिस्ट के अंत से nवें नोड को ढूंढना C प्रोग्राम में लिंक्ड लिस्ट के अंत से nवें नोड को ढूंढना

    n नोड्स दिए जाने पर, लिंक्ड लिस्ट के अंत से nवें नोड को प्रिंट करना है। प्रोग्राम को लिस्ट में नोड्स का क्रम नहीं बदलना चाहिए, बल्कि केवल लिंक्ड लिस्ट के अंत से nवें नोड को प्रिंट करना चाहिए। उदाहरण इनपुट: 10 20 30 40 50 60, N=3 आउटपुट: 40 उपरोक्त उदाहरण में, पहले नोड से शुरू करके count-n नोड्स त