#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##",指定的位数没有效果。
请前辈指教。
因为c语言本身是没有数组溢出检查的,scanf并不知道你定义的数组是多大,对f函数来说,只要不超过给它分配的栈大小就不会报错。