c - 检查用户输入是否在 1 到 10 之间
问题描述
我正在处理的程序的一部分是从用户那里获取一个数字,但条件是它必须是 1 到 10 之间的任何数字,所以我怎么能强迫用户只输入其中一个特定的数字,这样如果他写了任何其他数字或字符,就会弹出一条错误消息并重复该过程,直到他正确选择为止
这是代码
// getting a number from the user
int number;
printf("Please pick a number from 1 to 10 : ");
scanf("%d",&number);
printf("Oh ! You have chosen %d\n", number);
// what should i do here ?
解决方案
C 允许非常好的输入控制,但它不是免费的……换句话说,您不能依赖语言或标准库,而必须手动编写所有代码。
你想要什么:
- 控制输入是否为数字
- 控制数字在 1 到 10 之间
如何:
- 控制输入函数的返回值
- 如果你有一个数字控制它的值
- 如果您输入不正确(可选),请给出一条消息并循环询问
可能的代码:
int number;
for (;;) { // C idiomatic infinite loop
printf("Please pick a number from 1 to 10 : ");
if (scanf("%d", &number) != 1) {
// non numeric input: clear up to end of line
int c; // c must be int to compare to EOF...
while ((c = fgetc(stdin)) != EOF && (c != '\n'));
}
else if (number > 0 && number <= 10) break; // correct input: exit loop
// error message
printf("last input was incorrect\n");
}
printf("Oh ! You have chosen %d\n", number);
如果您想要一种更用户友好的方式,您可以对非数字输入和不正确的值使用不同的消息,但它留给您作为练习......(恐怕我太懒了;-))