(C)字符串长度变得大于我指定的最大大小?

时间:2019-02-18 18:49:00

标签: c string char string.h

我正在做一些测试,一个用户通过命令行在我的程序中输入字符串,但是我对某些事情感到困惑。当我指定char []数组的最大大小时,程序仍会以某种方式使char []大于我指定的最大长度,并且没有错误。 为什么会这样呢?尽管sizeof(input)包含14个字符,为什么input仍显示5个字节?

#define MAX_LENGTH 5

int main(){

    char input[MAX_LENGTH];
    printf("Max length: %d\n", MAX_LENGTH);
    printf("strlen(input) = %d\n", strlen(input));
    printf("sizeof(input) = %d\n", sizeof(input));

    printf("Enter string: ");
    scanf(" %s", input);

    printf("strlen(input) = %d\n", strlen(input));
    printf("sizeof(input) = %d\n", sizeof(input));
    printf("Input: %s", input);

    return 0;
}

我希望它可以扫描用户输入的前5个字符;但相反,它为输入内容提供了完整的输入内容...?

cmd行输出:

Max length: 5
strlen(input) = 0
sizeof(input) = 5
Enter string: foobarpizzapie
strlen(input) = 14
sizeof(input) = 5
Input: foobarpizzapie

0 个答案:

没有答案