Arrays C请求字符串的输入数组,直到它在指定的长度内

Arrays C请求字符串的输入数组,直到它在指定的长度内,arrays,c,string,loops,Arrays,C,String,Loops,我试图用C语言编写一个代码,在这里,我要求用户输入一个字符串数组,如果他们的输入长度超过10,那么我将打印一个错误,然后再次循环询问,直到他们输入一个小于10的字符串 我做的是做一个11位的数组,然后做一个无止境的for循环,然后做一个if语句,声明如果第11位不再是=='/0',那么我将打印“error”,然后做一个else作为break 代码: charx[11]; 内部主(空){ 对于(;;){ printf(“输入字符串X:”); scanf(“%s”,x); 如果(x[10]!='\0

我试图用C语言编写一个代码,在这里,我要求用户输入一个字符串数组,如果他们的输入长度超过10,那么我将打印一个错误,然后再次循环询问,直到他们输入一个小于10的字符串

我做的是做一个11位的数组,然后做一个无止境的for循环,然后做一个if语句,声明如果第11位不再是=='/0',那么我将打印“error”,然后做一个else作为break

代码:

charx[11];
内部主(空){
对于(;;){
printf(“输入字符串X:”);
scanf(“%s”,x);
如果(x[10]!='\0'){
printf(“错误\n”);
}否则{
打破
}
}
返回(退出成功);
}
在大多数情况下,如果我输入的字符串等于或小于10位,它就可以工作,如果我输入的字符串超过10位,那么它也可以工作,提示“错误”并要求再次输入字符串


但问题是,当我输入10以上以提示“错误”,然后在可接受的长度内输入时,它仍然会给我“错误”,除非我输入10的确切长度,它将在其中工作

您似乎对C不熟悉,当获得字符串输入时,数组将被分配输入的字符,直到输入的长度,并在空值(
'\0'
)后面

您正在检查最后一个值是否为NULL,这可能也是您分配的数组的初始值

因此,一旦您输入了
“1234567890A”
x[10]=“A”
。 现在让我们输入
“123”
,现在:
x=“123\0567890A”
,仍然是
x[10]=“A”

您需要使用C的标准
strlen
strlen(“123\0567890A”)->3

提示:
strlen(x)>0