2011-11-11 28 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。