0

我在 C 中接受用户输入时遇到问题。我只想取第一个数字。我从字符中过滤用户输入,但是当我输入 2 位数字(错误的用户输入)时,程序开始表现得很奇怪

它显示:

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);
}

谁能帮我解决什么问题?

4

1 回答 1

3

输入“21”时,您的第一个getchar()读取“2”,下一个getchar()可能应该吃换行符的读取“1”。然后输入“3”时,您的第一个getchar()读取换行符,第二个getchar()读取“3”。更改您的代码以sscanf改用。

于 2011-11-11T13:18:39.420 回答