0

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

#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 个字符;但相反,它提供输入的全部内容......?

命令行输出:

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

0 回答 0