2011-11-11 25 views
0

我在C語言中遇到了問題,我只想輸入第一個數字。我過濾從字符用戶的輸入,但是當我進入2個位數(錯誤的用戶輸入),程序啓動時的行爲怪異C用戶輸入驗證 - 只有一個字符需要轉換爲int

它顯示:

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讀取換行符,第二個getchar()讀取「3」。改變你的代碼來改用sscanf。