输入超过限制字符串长度,为什么还是能全部输出?
#include <stdio.h>
#include <stdlib.h>
int main(){
char word[8];
char word2[8];
scanf("%s",word);
scanf("%s",word2);
printf("%s##%s##\n",word,word2);
return 0;
}
ewqeeqe
eqweqweeqw
ewqeeqe##eqweqweeqw##
为什么没有因为限制长度8,而报错。
因为c语言是基于指针的
指针指向哪里,就去哪里的内存存取,而不判断指针是否已经越界
所以要么你自己想办法保证指针不要越界
要么换c#之类的更安全的编程语言
用指针就是更有效率但是不安全,鱼和熊掌不可兼得
-=-=-=
另,c语言不会抛异常,但是会因此造成数据错乱
比如你把代码颠倒一下,先赋值给b,再赋值给a,同时越界,那么a的字符串会有一部分占据b的地址,导致b的内容不是一开始你输入的内容