我正在做一些测试,一个用户通过命令行在我的程序中输入字符串,但是我对某些事情感到困惑。当我指定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