首页 > 解决方案 > 检查用户输入是否在 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

解决方案


C 允许非常好的输入控制,但它不是免费的……换句话说,您不能依赖语言或标准库,而必须手动编写所有代码。

你想要什么:

  1. 控制输入​​是否为数字
  2. 控制数字在 1 到 10 之间

如何:

  1. 控制输入​​函数的返回值
  2. 如果你有一个数字控制它的值
  3. 如果您输入不正确(可选),请给出一条消息并循环询问

可能的代码:

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);

如果您想要一种更用户友好的方式,您可以对非数字输入和不正确的值使用不同的消息,但它留给您作为练习......(恐怕我太懒了;-))


推荐阅读