我在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);
}
任何人都可以帮我解决问题吗?
答案 0 :(得分:3)
当输入“21”时,你的第一个getchar()读取'2',下一个可能应该吃换行符的getchar读取'1'。当然后输入“3”时,你的第一个getchar读取换行符,第二个getchar()读取'3'。将代码更改为使用sscanf。