C- 如何限制用户只能输入特定数量的元素?

C- How to restrict user to only enter a specific amount of elements?

我希望用户输入 10 个数字,如果他们输入的不是 10 个数字,我想告诉他们这是无效的。不太确定该怎么做,我尝试使用这样的 if 语句:


{
    char numbers[11];
    printf("Enter your 10 numbers: ");
    scanf("%s", numbers);

    if ( *numbers != 11)
        printf("Enter a valid number.\n");
    else
        printf("Your number is %s: \n", numbers);

    return 0;
}

有办法吗?

您应该将读取的字符串限制在最多 10 char 秒(使用 %10s)——否则您可能会写出越界。 您还应该确保阅读有效,并且您可以使用 strlen.

计算字符串中 char 的数量

numbers 在这里具有误导性。它会接受任何非空格 chars.

示例:

#include <stdio.h>
#include <string.h>

int main()
{
    char numbers[11];
    printf("Enter your 10 numbers: ");
    if(scanf("%10s", numbers) != 1 || strlen(numbers) != 10) {
        printf("Enter a valid number.\n");
    } else {
        printf("Your number is: %s\n", numbers);
    }
}

如果要确保输入的字符串只包含数字,可以将 scanf 格式限制为 %10[0-9]:

#include <stdio.h>
#include <string.h>

int main()
{
    char numbers[11];
    printf("Enter your 10 digits: ");
    if(scanf("%10[0-9]", numbers) != 1 || strlen(numbers) != 10 ) {
        printf("Enter a valid number.\n");
    } else {
        printf("Your number is: %s\n", numbers);
    }
}