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



我想让用户输入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个chars(与%10s一起)-否则您可能会有写越界的风险。您还应该确保读取工作,并且您可以计算strlen字符串中chars的数量。

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: %sn", 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: %sn", numbers);
}
}

最新更新