मैं सी प्रोग्रामिंग भाषा की किताब से निम्नलिखित कार्यक्रम चला रहा हूँ:getchar() = EOF
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar();
}
जब मैं इस कार्यक्रम चलाने के लिए, मैं एक अस्पष्टीकृत व्यवहार मिलता है। अगर मैं निम्न अनुक्रम में कमांड लाइन से अक्षर इनपुट करता हूं: {'h', 'e', 'l', 'l', 'o', '\n', '^D'}
तो मुझे स्क्रीन पर मुद्रित निम्न प्रतिक्रिया मिलती है: hello
, \n
इनपुट के बाद, और प्रोग्राम ^D
दर्ज होने पर छोड़ देता है।
हालांकि, जब मैं अनुक्रम को निम्नानुसार बदलता हूं: {'h', 'e', 'l', 'l', 'o', '^D'}
तो मुझे निम्न प्रतिक्रिया स्क्रीन पर मुद्रित होती है: hello
, लेकिन प्रोग्राम छोड़ नहीं जाता है। ^D
दर्ज करने के बाद इसे छोड़ना नहीं चाहिए? कार्यक्रम छोड़ने के लिए मुझे दूसरी बार ^D
दर्ज करना होगा। या प्रोग्राम ^D
\n
के बाद प्रवेश करने के बाद ही छोड़ देता है। मुझे समझ में नहीं आता कि जब मैं ^D
दर्ज करता हूं तो प्रोग्राम क्यों नहीं छोड़ा जाता है। कोई विचार?
मैं यूनिक्स सिस्टम पर चल रहा हूं।
ध्यान दें कि यह ऑपरेटिंग सिस्टम इनपुट स्ट्रीम की एक संपत्ति है, सी प्रोग्राम के नहीं। –
धन्यवाद, मैरियन और मैट मैकनब। मैंने सोचा कि इनपुट बफर केवल न्यूलाइन चरित्र टाइप करके फिसल गया है। मैं^डी के साथ एक समान व्यवहार के बारे में भी नहीं जानता था। – Nishi