कोड:EOF समाप्त नहीं करता इनपुट धारा
#include <stdio.h>
#define NEWLINE '\n'
#define SPACE ' '
int main(void)
{
int ch;
int count = 0;
while((ch = getchar()) != EOF)
{
if(ch != NEWLINE && ch != SPACE)
count++;
}
printf("There are %d characters input\n" , count);
return 0;
}
प्रश्न:
सब कुछ बस ठीक काम करता है, यह रिक्त स्थान और न्यू लाइन और उत्पादन पर ध्यान नहीं देगा स्क्रीन पर इनपुट अक्षरों की संख्या (इस कार्यक्रम में मैं केवल अल्पविराम, विस्मयादिबोधक चिह्न, संख्या या किसी भी प्रिंट करने योग्य विशेष प्रतीक चरित्र का इलाज करता हूं जैसे एम्पर्सेंड चरित्र के रूप में) जब मैंने ईओएफ सिमुलेशन को मारा जोहै।
लेकिन जब मैं इस लाइन को प्रोग्राम में इनपुट करता हूं तो कुछ गड़बड़ होती है। उदाहरण के लिए मैं इसे इनपुट करता हूं:
abcdefg^z
, जिसका अर्थ है कि मैं^z
के समान लाइन पर पहले और उसके बाद कुछ वर्ण इनपुट करता हूं। कार्यक्रम को समाप्त करने और कुल पात्रों को मुद्रित करने के बजाय, कार्यक्रम इनपुट मांगना जारी रखेगा।ईओएफ टर्मिनल वर्ण इनपुट केवल तभी काम करता है जब मैं एक पंक्ति पर
^z
निर्दिष्ट करता हूं या ऐसा कर रहा हूं:^zabvcjdjsjsj
। ये क्यों हो रहा है?
फिर क्यों^z को एक वर्ण के रूप में गिना नहीं जाता है जब मैं इसे एक पंक्ति में विशेषताओं की धारा के बाद रखता हूं? उदाहरण के लिए "abcdefg^z" केवल मुझे वापस लौटाता है "इनपुट के बाद 8 के बजाय 7 अक्षर inpit"^जेड उस लाइन के बाद। – caramel1995
@ कारमेल 23: मेरा मानना है कि विंडोज कंसोल बस इसे अनदेखा करता है और प्रोग्राम को चलाने के लिए एक चरित्र पास नहीं करता है। मुझे नहीं पता कि ऐसा क्यों होता है। –