C 用户输入验证--只需要一个转换为 int 的字符。

问题描述 投票:0回答:1

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

谁能帮帮我,问题出在哪里?

c char int validation getchar
1个回答
3
投票

当输入 "21 "时,你的第一个 getchar() 读作 "2",下一个 getchar()当输入 "3 "的时候,你的第一次 getchar() 读出新行和您的第二个 getchar() 读作 "3"。修改你的代码,使用 "3"。sscanf 而不是。

© www.soinside.com 2019 - 2024. All rights reserved.