Thursday 15 July 2010

switch statement - word counting program in c counts more than it should -


ठीक है, इसलिए मैंने इस कार्यक्रम को लिखा

  #include & lt; stdio.h & gt; / * गिनती शब्द * / मुख्य () {int c, c2; लंबी गणना = 0; जबकि ((सी = getchar ()) = EOF) {स्विच (सी) {केस '': मामले '\ n': केस '\ t': स्विच (सी 2) {case '': case '\ n': मामले '\ t': तोड़; डिफ़ॉल्ट: ++ गणना; }} सी 2 = सी; } Printf ("शब्द संख्या:% एलडी \ n", गिनती); }   

यह इनपुट से शब्दों की गणना करता है, जैसा कि आप देख सकते हैं इसलिए मैंने a-text नामक एक फाइल लिखी जो केवल

  एक टेक्स्ट   

है और मैंने उबुन्टू प्रॉम्प्ट में लिखा

 < कोड> ./ cw & lt; ए-टेक्स्ट   

और लिखा है

  शब्द गणना: 2   

तो, क्या हैक? यह सिर्फ 1 गिनती नहीं है, क्योंकि दूसरे शब्द के बाद कोई टैब नहीं है और न ही नई लाइन और न ही अंतरिक्ष, केवल ईओएफ। ऐसा क्यों होता है?

रिक्त स्थान के बजाय शब्द क्यों नहीं गिनती? तब आपके पास कोई समस्या नहीं है जब इनपुट को अंतरिक्ष के साथ समाप्त होता है।

  #include & lt; ctype.h & gt; # शामिल करें & lt; stdio.h & gt; Int main (int argc, char ** argv) {int is_space = 1; Int c; Int count = 0; जबकि ((सी = getchar ())! = EOF) {count + =! Isspace (c) & amp; amp; was_space; Was_space = isspace (c); } Printf ("शब्द संख्या:% d \ n", गिनती); वापसी 0; }    

No comments:

Post a Comment