赞
踩
对于C语言的初学者来说,使用vs2022(或是vs的其他版本)时,程序中涉及到 “scanf函数”,程序无法通过编译,报错:C4996
- int main()
- {
- printf("请输入成绩:");
- int score = 0;
- scanf("%d,", &score);
- printf("您的成绩为:%d\n", score);
- return 0;
- }
例如,通过vs2022对该程序进行编译时就会出现以下情况:
编译器提示:”scanf”这个函数可能是不安全的,请考虑使用“scanf_s"进行替换或者通过使用
“_CRT_SECURE_NO_WARNINGS”让这个错误描述失效。
根据提示,我们有以下三种解决方案:
使用“scanf_s”进行替换:
- int main()
- {
- printf("请输入成绩:");
- int score = 0;
- scanf_s("%d,", &score);
- printf("您的成绩为:%d\n", score);
- return 0;
- }
但是,使用“scanf_s”进行替换有一定的弊端,原因是:
“scanf_s”是vs这个IDE 所提供的函数,并非是C语言标准库中的函数,这就意味这”scanf_s“在其他编译器上无法通过编译,降低了代码的可移植性。
在源文件的第一行(注意,一定要在第一行)加入:
#define _CRT_SECURE_NO_WARNINGS
这时,C4996这个错误描述就会失效。程序可正常编译。
但是,每次新建源文件时,都需要添加这段代码会很麻烦。在这里,小编为大家提供一种一劳永逸的方法,我每次创建源文件时都会自动在第一行加上以上代码。
我们了解到通过vs 在项目中新建源文件时,源文件都来源于文件: newc++file.cpp
所以,我们可以通过修改该文件来实现方法二,具体步骤如下:
1.使用 everything等工具或者直接在电脑中搜索 newc++file.cpp文件
小编这里是使用everything进行查抄文件(超级好用!!!!)
这里,我们复制一份该文件到桌面,因为直接进行修改的话,会被提示没有访问权限。
复制到桌面后,鼠标右键该文件通过 "记事本“打开文件,输入:
#define _CRT_SECURE_NO_WARNINGS
保存后,将该文件复制到原来的文件夹粘贴,并选择替换目标中的文件。
大功告成,这时,你每次添加源文件的时候都会在首行自动加上:
#define _CRT_SECURE_NO_WARNINGS 1
直接针对该错误描述进行处理:
在程序前加上:#pragma warning(disable:4996)
例如:
- #pragma warning(disable:4996)
- int main()
- {
- printf("请输入成绩:");
- int score = 0;
- scanf("%d,", &score);
- printf("您的成绩为:%d\n", score);
- return 0;
- }
好哒,以上是vs中scanf函数报错c4996说明及解决方案,希望对您有所帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。