关于c语言字符数组溢出不报错的问题?

#include <stdio.h>void f(void){    char a[8];    char b[8];    scanf("%s",a);    scanf("%s",b);    printf("%s##%s##\n",a,b);
} 
int main(void){
    f();    return 0;
}

初学c语言
代码如上,我定义了了两个长度为8的字符数组。但是当我输入长度超过8的字符时,为什么依然可以正常输出。
例如我输入"123123123 123123123",pirntf出来就是"123123123##123123123##",指定的位数没有效果。
请前辈指教。


千万里不及你
浏览 905回答 1
1回答

蝴蝶刀刀

因为c语言本身是没有数组溢出检查的,scanf并不知道你定义的数组是多大,对f函数来说,只要不超过给它分配的栈大小就不会报错。
打开App,查看更多内容
随时随地看视频慕课网APP