相信很多人遇到过使用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的编译器上是不能编译通过的 这样就降低了代码的可移植性
那么如何消除错误呢
利用宏消除scanf安全警告- 找到VS目录中的 newc++file.pp用notepad++或者其他文本编辑器 添加#define _CRT_SECURE_NO_WARNINGS 这句话
(这样就告诉他 不要在警告我啦!)
问题解决!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)