相信很多人遇到过使用scanf提示错误的情况
那么VS报错的原因是什么呢?
先说一下scanf与scanf_s的区别
scanf()函数是标准c中提供的标准输入函数,用来接收用户的输入数据
scanf_s()函数是微软公司VS开发工具提供的一个功能相同的安全标准函数,使用该函数的时候 必须提供一个数字来表明最多读取多少位字符
而scanf()函数在读取数据的时候不检查边界,所以可能造成内存访问越界
举个栗子
//比如 如果分配了5个字节的空间但是 用户输入了10个字节,就会导致scanf()都熬10个字节
char arr[5]={};
scanf("%s",arr);
//如果你输入1234567890,那么5以后的部分会被写到别的变量所申请的空间上面去
//这可能就会导致程序运行异常
在这里推荐使用scanf 因为scanf毕竟是标准库函数 而scanf_s是VS专用的
你的代码在非VS的编译器上是不能编译通过的 这样就降低了代码的可移植性
那么如何消除错误呢
利用#define消除scanf安全警告
- 找到VS目录中的 newc++file.pp
- 用notepad++或者其他文本编辑器 添加#define _CRT_SECURE_NO_WARNINGS 这句话
(这样就告诉他 不要在警告我啦!)
问题解决!