मैं डेनिस रिची की द सी प्रोग्रामिंग लैंग्वेज किताब में पढ़ता हूं intजिसका उपयोग ईओएफ को रखने के लिए एक चर के लिए किया जाना चाहिए - इसे पर्याप्त रूप से बड़ा बनाने के लिए ताकि यह ईओएफ मूल्य को पकड़ सके - नहीं char। लेकिन निम्नलिखित कोड ठीक काम करता है:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
जब अधिक इनपुट नहीं होता है, तो getcharEOF लौटाता है। और उपरोक्त कार्यक्रम में, चर c, चर प्रकार के साथ, इसे सफलतापूर्वक आयोजित करने में सक्षम है।
यह काम क्यों करता है? उपर्युक्त पुस्तक में दिए गए स्पष्टीकरण के अनुसार, कोड को काम नहीं करना चाहिए।
0xff। उस समस्या का हल getchar()एक परिणाम के रूप में संग्रहीत करना int। आपका प्रश्न अनिवार्य रूप से comp.lang.c FAQ में प्रश्न 12.1 जैसा ही है , जो एक उत्कृष्ट संसाधन है। (इसके अलावा, main()होना चाहिए int main(void), और इसे return 0;बंद करने से पहले जोड़ने के लिए चोट नहीं पहुंचेगी }।)