限定长度字符数组与gets()输入超长时为什么会全取值

[复制链接]
1153|5
 楼主| 还是坚信 发表于 2020-7-16 11:45 | 显示全部楼层 |阅读模式
void main()
{
        char string[5];
        gets(string);
        puts(string);
        printf("%s\n",string);
//        return 0;
}

以上程序输入:abcdefgh
会输出所有输入值
为什么不是只取5个字符?
dirtwillfly 发表于 2020-7-16 22:09 | 显示全部楼层
你用的什么开发环境?字符串越界,不报错吗?
这个和开发环境有关
steelen 发表于 2020-7-21 16:16 | 显示全部楼层
你这个问题是内存泄漏
gets函数不检查边界的
 楼主| 还是坚信 发表于 2020-7-31 18:11 | 显示全部楼层
dirtwillfly 发表于 2020-7-16 22:09
你用的什么开发环境?字符串越界,不报错吗?
这个和开发环境有关

用的是VC6
 楼主| 还是坚信 发表于 2020-7-31 18:14 | 显示全部楼层
steelen 发表于 2020-7-21 16:16
你这个问题是内存泄漏
gets函数不检查边界的

就算gets不检查边界,数组应该也进行限定才对啊
zzz3265 发表于 2020-8-8 20:59 | 显示全部楼层
vc 需要自己处理边界问题, 除非你用新版的编译器, 带边界检查功能的函数
vc最麻烦的是溢出, 溢出导致的异常很难找
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

104

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部