C语言——程序C4996:scanf等错误的解决方法(用scanf_s不替换解决)问题事例解决方法1方法2
在VS编译器下,编写的C语言程序在调试编译时可能会出现c4996警告和错误等反馈信息,这里根据自己的实践经验总结了一些解决这类问题的方法。 以下,通过具体例子进行叙述。
问题的实例
我给你看一段简单的代码:
int main () {int age=0; printf ('请输入年龄:'); scanf('%d ',age ); printf ('您输入的年龄是%dn ',age ); 返回0; }调试运行过程中显示错误或警告消息:
1----3360项目: test已开始生成。 debug win32---1 test.c1h :2020 c学习classcodetest test.c ) 24 ) : errorc 4996: ' scanf ' : thisfunctionorvariablemaybeunsafe.considerusingscanf _ sinstead.todi scad elpfordetails.1c : (program files (x86 ) Windowskits(10 ) Inching sdio.h(1270 ) :note:「scanf”声明==========
1----3360项目: test已开始生成。 debug win32---1 test.C1 test.vcx proj-h :2020 cc学习 class codetest test.exe======3:
但是,实际上,scanf是c语言提供的函数,提供scanf_s是为了避免使用大多数编译器,但scanf_s函数是VS编译器提供的本身认为安全的版本,在其他编译器下不一定是这样
解决方法1 (在错误报告提示中,叙述以下内容。
To disable deprecation,use _CRT_SECURE_NO_WARNINGS .为此,在源程序的开头(头文件之前)添加代码。
# define _ CRT _ secure _ no _ warnings 1调试编译后,问题得到解决:
1----3360项目: test已开始生成。 debug win32---1 test.C1 test.vcx proj-h :2020 cc学习Classcode test test.exe==========:生成成功的1个、失败的0个、最新的0个、跳过的0个=======每次编写程序时都不添加以上一行代码
找到您自己安装的visual studio路径------Microsoft visual studio 14.0------ VC---- VC 只显示以上代码,可以解决c4996中出现的scanf、strcpy、strcat等函数的警告和错误报告问题。
方法2与方法1一样,在头文件之前添加以下行代码也可以解决问题。
# pragma warning (distable :4996 )要使上述代码行自动显示在新创建的. c文件中,请参阅方法1的方法步骤。