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