谁能告诉我为什么下面的代码仍然有效?很明显 str[4] 越界了:
#include<stdio.h>
int main(){
char str[3];
scanf("%s", str);
printf("%c\n", str[4]);
printf("%s\n", str);
return 0;
}
当它运行时, enter abcdefg
,它会回显第 5 个字符和整个字符串,什么都不会出错,奇怪吗?
已经声明 c/c++ 不进行边界检查,而在上述情况下,我应该如何使用 printf 打印用户输入的 c 字符串?或更一般地说,如何正确使用来自用户的 c 字符串?