【问题标题】:C asks an input array of string until it is within a specified lengthC 询问一个字符串的输入数组,直到它在指定的长度内
【发布时间】:2021-06-18 08:14:50
【问题描述】:

我正在尝试在 C 中编写代码,其中我要求用户输入一个字符串数组,如果他们的输入超过 10 的长度,那么我将打印一个错误,然后循环返回并再次询问,直到他们输入低于 10 的字符串

我所做的是创建一个 11 位数组,然后是一个无限循环,然后创建一个 if 语句,说明如果第 11 位不再是 == '/0' 那么我将打印“错误”做了一个 else 作为休息。

代码:

char x[11];

int main(void) {
    for (;;) {

        printf("Enter String X: ");
        scanf("%s", x);

        if (x[10] != '\0') {
            printf("ERROR\n");
        } else {

            break;
        }
    }

    return (EXIT_SUCCESS);
}

如果我输入等于或小于 10 位的字符串,这在大多数情况下都有效,如果我输入超过 10 位,那么它也可以提示“错误”并要求再次输入字符串,

但问题是,当我输入超过 10 以提示“错误”,然后在接受的长度内输入时,它仍然会给我“错误”,除非我输入 10 的确切长度,否则它将起作用

【问题讨论】:

  • 提示:strlen(x) > 0

标签: arrays c string loops


【解决方案1】:

您似乎是 C 新手,在获取字符串输入时,数组被分配了输入的字符,直到输入的长度,并且跟随一个 NULL 值 ('\0')。

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

所以一旦你输入了"1234567890A"x[10] = 'A'。 现在让我们输入"123",现在:x = "123\0567890A",仍然是x[10] = 'A'

你需要使用C的标准strlenstrlen("123\0567890A") -> 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多