1. परिचय
C में प्रोग्रामिंग करते समय फ़ाइल संचालन और मानक इनपुट को संभालना आवश्यक होता है। इनमें से, EOF (End of File) एक विशेष मान के रूप में प्रकट होता है जो फ़ाइल या इनपुट के अंत को दर्शाता है। यदि आप EOF को सही ढंग से नहीं समझते हैं, तो आप फ़ाइल के अंत को ठीक से नहीं संभाल पाएँगे, जिससे प्रोग्राम का व्यवहार अनपेक्षित हो सकता है। इस लेख में हम EOF की परिभाषा, इसका उपयोग, और इसे काम में लेते समय ध्यान रखने योग्य महत्वपूर्ण बिंदुओं को समझाएँगे।
2. EOF की परिभाषा और भूमिका
EOF (End of File) C में फ़ाइल के अंत या त्रुटि को दर्शाने के लिए उपयोग किया जाने वाला एक विशेष मान है, और यह मानक लाइब्रेरी stdio.h में परिभाषित है। विशेष रूप से, EOF का मान -1 होता है। फ़ाइलों या इनपुट स्ट्रीम के साथ काम करते समय आप EOF का उपयोग यह जांचने के लिए कर सकते हैं कि सभी डेटा पढ़े जा चुके हैं या नहीं।
उदाहरण के लिए, getchar() और fgetc() फ़ंक्शन फ़ाइल के अंत तक पहुँचने पर EOF लौटाते हैं। इससे आपका प्रोग्राम डेटा के अंत को पहचान कर उसे उचित रूप से संभाल सकता है।
#include <stdio.h>
int main() {
FILE *file = fopen("sample.txt", "r");
int c;
while ((c = fgetc(file)) != EOF) {
putchar(c);
}
fclose(file);
return 0;
}
यह कोड फ़ाइल को एक‑एक अक्षर पढ़ता है और प्रत्येक अक्षर को तब तक प्रिंट करता है जब तक EOF नहीं मिल जाता।
3. EOF का उदाहरण उपयोग: getchar() और feof()
EOF आमतौर पर इनपुट फ़ंक्शन जैसे getchar() और fgetc() के साथ उपयोग किया जाता है। नीचे getchar() के साथ EOF का एक सामान्य उदाहरण दिया गया है।
#include <stdio.h>
int main() {
int c;
// Get characters from standard input until EOF is returned
while ((c = getchar()) != EOF) {
putchar(c);
}
return 0;
}
यह प्रोग्राम मानक इनपुट से एक‑एक अक्षर पढ़ता है और प्रत्येक अक्षर को तब तक आउटपुट करता रहता है जब तक EOF दर्ज नहीं किया जाता। कीबोर्ड से EOF इनपुट करने के लिए Ctrl + D (Linux या macOS) या Ctrl + Z (Windows) का उपयोग करें।
feof() फ़ंक्शन भी यह जांचने में उपयोगी है कि फ़ाइल का अंत पहुँच गया है या नहीं। यह फ़ंक्शन तब true (1) लौटाता है जब फ़ाइल का अंत पहुँच जाता है, अन्यथा false (0)।
#include <stdio.h>
int main() {
FILE *file = fopen("sample.txt", "r");
if (file == NULL) {
perror("Cannot open file");
return 1;
}
int c;
while ((c = fgetc(file)) != EOF) {
putchar(c);
}
if (feof(file)) {
printf("nEnd of file reached.n");
}
fclose(file);
return 0;
}
यह कोड EOF पहुँचने के बाद feof() का उपयोग करके यह जांचता है कि फ़ाइल पूरी तरह पढ़ी गई है या नहीं।
4. EOF को संभालते समय महत्वपूर्ण नोट्स
EOF के साथ काम करते समय एक महत्वपूर्ण बिंदु char और int प्रकारों के बीच अंतर है। getchar() और fgetc() जैसे फ़ंक्शन EOF को -1 के रूप में लौटाते हैं, इसलिए उनका रिटर्न टाइप int होता है। यदि आप रिटर्न वैल्यू को char वेरिएबल में असाइन करते हैं, तो साइन त्रुटि हो सकती है और EOF को सही ढंग से नहीं पहचाना जा सकता।
उदाहरण के लिए, EOF को char वेरिएबल में असाइन करने से वह 0xFF में बदल सकता है। इससे फ़ाइल के अंत को सही से पहचानना बाधित हो सकता है, जिससे अप्रत्याशित व्यवहार हो सकता है।
इसलिए EOF के साथ काम करते समय int प्रकार का उपयोग करने की सलाह दी जाती है। नीचे int प्रकार का उपयोग करके EOF की सही जाँच का एक उदाहरण दिया गया है:
#include <stdio.h>
int main() {
int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
return 0;
}
यह कोड रिटर्न वैल्यू को int के रूप में प्राप्त करके EOF को सही ढंग से पहचानता है।

5. उन्नत उदाहरण: EOF के साथ पंक्तियों की गिनती
EOF के एक उन्नत उपयोग के रूप में, आइए एक प्रोग्राम देखें जो फ़ाइल में पंक्तियों की संख्या गिनता है। यह प्रोग्राम फ़ाइल को अक्षर‑दर‑अक्षर पढ़ता है जब तक नहीं मिल जाता, और प्रत्येक नई पंक्ति (\n) मिलने पर काउंट को बढ़ाता है।
#include <stdio.h>
int main() {
FILE *file = fopen("sample.txt", "r");
int c;
int line_count = 0;
if (file == NULL) {
perror("Cannot open file");
return 1;
}
while ((c = fgetc(file)) != EOF) {
if (c == 'n') {
line_count++;
}
}
printf("Number of lines: %dn", line_count);
fclose(file);
return 0;
}
यह प्रोग्राम किसी फ़ाइल में नई पंक्ति (newline) अक्षरों की गिनती करता है और अंतिम पंक्ति संख्या आउटपुट करता है। यह EOF का उपयोग करके फ़ाइल के अंत का पता लगाने और प्रोसेसिंग को समाप्त करने का एक सामान्य उदाहरण है।
6. निष्कर्ष
EOF C में फ़ाइलों या मानक इनपुट के अंत का पता लगाने में एक महत्वपूर्ण भूमिका निभाता है। EOF को सही तरीके से उपयोग करना समझकर आप अधिक विश्वसनीय फ़ाइल और इनपुट हैंडलिंग प्रोग्राम बना सकते हैं। साथ ही, यह याद रखें कि int प्रकार का उपयोग char के बजाय करने से आप EOF को सटीक रूप से पहचान सकते हैं।
यह लेख EOF की व्यापक व्याख्या प्रदान करता है, मूल बातों से लेकर व्यावहारिक उदाहरणों और उन्नत उपयोग तक। C में फ़ाइल संचालन के साथ काम करते समय, इसे संदर्भ के रूप में उपयोग करने में संकोच न करें।



