为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
千万里不及你 2018-07-26 18:08:44
#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##",指定的位数没有效果。请前辈指教。
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

因为c语言本身是没有数组溢出检查的,scanf并不知道你定义的数组是多大,对f函数来说,只要不超过给它分配的栈大小就不会报错。

查看完整回答
反对 回复 2018-07-27
  • 1 回答
  • 0 关注
  • 903 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信