【发布时间】:2016-08-31 03:37:24
【问题描述】:
创建一个简单的 C 函数来防止用户输入除 1 到 9 之间的数字以外的任何内容。不应接受任何其他输入,包括字母符号和任何小于 1 和大于 9 的数字。 到目前为止,它非常简单。但是,代码应该检查输入的字符不是符号或字母的部分没有按照我希望的方式工作。
int validateUserInput(){
printf("%s\n", "Please enter a number from 1 to 9: ");
char value = getchar();
int numValue = value;
char temp;
int digitCounter = 0;
while((temp = getchar()) != '\n'){
digitCounter++;
}
//if there is more than 1 digit.
if(digitCounter>0){
printf("%s\n","Input too long!");
return validateUserInput();
}
// if the char entered is not between 1 and 9
// this part is giving me a hard time.
else if(numValue < 49 || numValue > 57){
printf("%s\n", "Imput is not within the valid parameters");
return validateUserInput();
}
return numValue;
}
【问题讨论】:
-
不要使用 49 和 57;使用
'1'和'9'。 (这是“输入”或“输入”的拼写错误吗?)最好说“输入 1 到 9 之间的单个数字”之类的内容,清楚地表明范围。我什至可以展示你拒绝的价值。 -
您希望函数返回 ASCII 码还是数字本身?如果是后者,则需要返回
numValue - '0'; -
<ctype.h>有isdigit( ch )和<string.h>有strlen( str ),你可以用它来解决你的问题。