feof() फंक्शन क्या है?
feof() C की फाइल हैंडलिंग लाइब्रेरी (stdio.h) का एक फंक्शन है जो फाइल के अंत (End of File - EOF) का पता लगाने के लिए उपयोग किया जाता है।
सिंटैक्स
int feof(FILE *stream);
- यदि फाइल पॉइंटर अंत पर पहुँच गया है → शून्येतर (non-zero) लौटाता है।
- अन्यथा → 0 लौटाता है।
सामान्य उपयोग पैटर्न
FILE *fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("फाइल खोलने में त्रुटि\n");
return 1;
}
int num;
while (1) {
num = getw(fp); // या fscanf, fgetc आदि
if (feof(fp)) {
printf("फाइल का अंत पहुँच गया।\n");
break;
}
printf("%d ", num);
}
fclose(fp);
पूर्ण उदाहरण प्रोग्राम
#include <stdio.h>
int main() {
FILE *fp;
int i, n;
// 1. फाइल बनाएं और डेटा लिखें
fp = fopen("number.txt", "w");
if (fp == NULL) return 1;
for (i = 0; i <= 100; i += 10)
putw(i, fp); // 0, 10, 20... 100 लिखें
fclose(fp);
// 2. फाइल पढ़ें और feof() से अंत जांचें
fp = fopen("number.txt", "r");
if (fp == NULL) return 1;
printf("फाइल सामग्री:\n");
for (i = 0; i <= 100; i++) {
n = getw(fp);
if (feof(fp)) {
printf("\nफाइल का अंत पहुँच गया।\n");
break;
}
printf("%d\t", n);
}
fclose(fp);
return 0;
}
आउटपुट
फाइल सामग्री: 0 10 20 30 40 50 60 70 80 90 100 फाइल का अंत पहुँच गया।
महत्वपूर्ण सावधानियां
⚠ feof() का सही उपयोग
गलत तरीका:
while (!feof(fp)) { // समस्या: feof() पढ़ने के *बाद* सेट होता है
fscanf(fp, "%d", &x);
printf("%d ", x); // अंतिम मान दो बार प्रिंट हो सकता है
}
सही तरीका:
while (fscanf(fp, "%d", &x) == 1) { // पढ़ने की सफलता जांचें
printf("%d ", x);
}
// लूप अपने आप तब रुकता है जब पढ़ने में विफलता होती है (EOF या त्रुटि)
सारांश
feof()केवल पढ़ने के प्रयास के बाद EOF स्थिति बताता है।- लूप की शर्त में सीधे
feof()न जांचें; पढ़ने वाले फंक्शन के रिटर्न मान को जांचें। - बाइनरी फाइल्स के लिए
fread()के रिटर्न मान की जांच बेहतर है।