2013-01-31 46 views
1

我寫一個簡單的程序來計算字符的用戶的數量進入了,我寫了,如果要請檢查是否有一個換行符,但仍然打印出來..如何計算沒有換行符的字符數?

代碼:

#include <stdio.h> 

int main() 

{ 
    char ch; 
    int numberOfCharacters = 0; 
    printf("please enter a word, and ctrl + d to see the resault\n"); 

    while ((ch = getchar()) != EOF) 

    { 
     if (numberOfCharacters != '\n') 
     { 
      numberOfCharacters++; 
     } 


    } 

    printf("The number of characters is %d", numberOfCharacters); 

    return 0; 
} 

什麼我做錯了嗎?

+0

你可能想考慮所有的控制字符,而不僅僅是新行。 http://www.cplusplus.com/reference/cctype/iscntrl/或相反的可打印字符http://www.cplusplus.com/reference/cctype/isprint/ –

+1

請注意,['getchar()'](http:/ /en.cppreference.com/w/c/io/getchar)返回一個'int',而不是'char'。 – hmjd

+0

所以ch應該是int ch? @hmjd – JohnBigs

回答

6

想想這行:

if (numberOfCharacters != '\n') 

如何纔能有意義嗎?您將目前閱讀的字符數與換行符進行比較,就像比較蘋果和橙子一樣,肯定不會起作用。這是另一個變量,你應該檢查...

+2

雖然你的答案不會被選中,但我喜歡它,因爲它會讓OP頭朝上並讓他們思考,而不是僅僅解決問題。 – phonetagger

+0

@phonetagger:謝謝:);我認爲這是一種正確的答案,即讓一個正在學習的人 - 他不需要現成的解決方案,而是提示讓他走上正確的道路。 –

5

將您的循環更改爲此。

while ((ch = getchar()) != EOF) 
{ 
    if(ch != '\n') 
     numberOfCharacters++; 
} 
+0

ohhhh ops!謝謝:) @ AshwinMukhija – JohnBigs

+0

請注意,某些平臺可能需要按ENTER才能處理緩衝區。如果你想單字符輸入,你可能不得不使用特定於平臺的功能。 –

相關問題