C语言程序报错,堆栈缓冲区?

参考着bit鹏的视频,编辑密码的程序

img

img


输入密码回车后就报错

img

没有找到解决方案,
这个问题如何解决哇,

数组password容量只有1个单位,你输入了123456肯定是溢出了啊,把[]里面填上容量即可。

你设置_CRT_SECURE_NO_WARNINGS 只是不报错了
不代表你运行时逻辑正确
你还是要把逻辑改对,才是解决问题的根本

您好,_CRT_SECURE_NO_WARNINGS 宏是告知编译器不报错,而此代码的根本错误是password的存储空间声明为1,而输入不止1,因此出错。

可做如下修改:char password[7] = {0};

对于char password[] = {0}; 这种定义,它是以后面的赋值个数来定义存储空间,只有一个0则意味着数组大小为1

问题已解决
忽略了# define _CRT_SECURE_NO_WARNINGS 要放在程序的第一行!