我想让用户输入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
s(与%10s
一起)-否则您可能会有写越界的风险。您还应该确保读取工作,并且您可以计算strlen
字符串中char
s的数量。
numbers
在这里是误导的。它将接受任何非空白的char
s。
的例子:
#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);
}
}