Vs中c语言问题
发布网友
发布时间:2022-04-19 21:39
我来回答
共1个回答
热心网友
时间:2023-07-16 07:01
在VS2013中,每次使用scanf都会报错:This function or variable may be unsafe. Consider
using scanf_s instead. To disable deprecation, use
_CRT_SECURE_NO_WARNINGS. See online help for details.
给了两种解决办法,要不就是用scanf_s,要不就用_CRT_SECURE_NO_WARNINGS来处理不报错,为什么会出现这种原因呢?
scanf()在读取时不检查边界,所以可能会造成内存泄露,所以VS2013提供了scanf_s()来替代,在调用时,必须提供给scanf_s一个数字以表明读取多少位字符,用法为scanf_s("%c",&letter,sizeof(letter)),否则,即使Ctrl+F7和Ctrl+F5通过了,程序的运行结果也可能与自己所期望大相径庭的。
如果非要用scanf函数,那么通过以下两种方式可以禁止警告:
(1)右击项目——属性——C/C++——预处理器——预处理器定义中增加_CRT_SECURE_NO_WARNINGS,然后点确定,退出。
(2)在函数最顶头进行定义:#define _CRT_SECURE_NO_WARNINGS,也可以禁止报错警告追问我说输入几个变量的时候。。。是不是每个变量后面都要加个数字。。答非所问。。
追答不是吧