2014-08-31 71 views
-3

我的櫃檯似乎並沒有增加(對於C編程)計數器不增加正常

int ch; 
int counterX = 0; 
int counterY = 0; 

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

    if (ch == 'X'){ 
     counterX = counterX + 1; 
     } 
    if (ch == 'Y'){ 
     counterY = counterY + 1; 
     } 
} 

香港專業教育學院做了一些測試,我似乎沒有增加,無論我輸入了counterX和counterY數量。請幫忙!

+0

你提交的代碼是不可編譯的,因爲你錯過了ch的定義,並且你錯過了包含while循環的大括號 - 這個大括號可能是至關重要的。 – 2014-08-31 10:27:39

+0

sry這只是我目前程序中有問題的一個粗略部分。生病編輯它 – user2947725 2014-08-31 10:30:08

+0

嘗試調試您的代碼:http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – alk 2014-08-31 10:31:48

回答

1

應該工作,只要你添加一個右大括號和程序的其餘部分。並提供你實際上X和/或Y出現在輸入流。

例如,下面的完整的程序:

#include <stdio.h> 

int main (void) { 
    int ch, counterX = 0, counterY = 0; 

    while ((ch = getchar()) != EOF) { 
     if (ch == 'X') 
      counterX = counterX + 1; 
     if (ch == 'Y') 
      counterY = counterY + 1; 
    } 
    printf ("X = %d, Y = %d\n", counterX, counterY); 
    return 0; 
} 

的意志,當與echo XYZZY | testprog運行,輸出:

X = 1, Y = 2 

順便說一句,如果你足夠好的Ç編碼器來使用:

while ((a = something) == somethingElse) 

構造,你也許應該知道關於counterX++速記以及:-)

+0

是啊我的壞,我忘了把我的輸出在我的循環內。反正 – user2947725 2014-08-31 10:53:23