2011-11-11 14 views
0

を必要とintに変換し、一つだけの文字、私は私が唯一の最初の数字を取りたい問題C.にユーザー入力を取っています。 I文字からのユーザ入力をフィルタリングするが、私は2桁(間違ったユーザー入力)を入力すると、プログラムは奇妙なCユーザー入力の検証 -

を動作するように起動することが表示されます。

Turn 2 : What number? 21 
Turn 2 : What number? 1 6 2 4 2 

//User input validation 
int GetColorGuess(int counter) 
{ 
    int color=1; 
    int inputChar=' '; 
    do{ 
     printf("Turn %d : What number? ",counter); 
     inputChar=getchar(); 
     getchar(); 
    } 
    while(inputChar<((int)'1') || inputChar>selectedColorSize+'0'); 

    color = digit_to_int(inputChar); 

    return color; 
} 
//convert char which represents digit to int 
int digit_to_int(char d) 
{ 
char str[2]; 
str[0] = d; 
str[1] = '\0'; 
return (int) strtol(str, NULL, 10); 
} 

誰も私を助けることができる何ですか問題?

答えて

3

「21」あなたの最初のGETCHARを入力する()「2」を読み込み、おそらく改行を食べる必要があります次のGETCHARは、「1」を読み込みます。 "3"を入力すると、最初のgetcharは改行を読み、2番目のgetchar()は '3'を読み込みます。代わりにsscanfを使用するようにコードを変更してください。