在Visual Studio 2022中,scanf函数会被VS编辑器报错警告。那么我们该如何和在Visual Studio 2022使用这个函数呢?
问题测试:
我们快速写一个测试代码:
#include <stdio.h>
int main()
{
int num;
printf("enter your favorite number:\n");
scanf("%d", &num);
printf("Your favorite number is %d", num);
return 0;
}
我们编译运行一下,发现弹出了如下对话框,很明显,在这段测试代码中产生了某种错误。
那么,我们该如何解决这个错误呢?我们看一下编译器告诉了我们什么:
这里可能看的不是很清楚我复制一下这段话:
已启动生成…
1>------ 已启动生成: 项目: Project_0_0, 配置: Debug x64 ------
1>Project.c
1>E:\Development\Test\CProject\bit-c-language-training-camp\Project_0_0\Project_0_0\Project.c(6,2): error C4996: ‘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.
1>已完成生成项目“Project_0_0.vcxproj”的操作 - 失败。
========== 生成: 0 成功,1 失败,0 最新,0 已跳过 ==========
========= 生成 开始于 10:22 PM,并花费了 00.228 秒 ==========
注意看这段话:
error C4996: ‘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这个功能可能是不安全的,我们可以考虑使用scanf_s代替。如果要持续使用,请使用_CRT_SECURE_NO_WARNINGS。好了,那么到这里,我们基本上已经明白这个问题的解决方法了,那么我们开始解决问题。
方法一:使用scanf_s替代(不推荐)
根据Visual Studio 2022中断错误提示,我们以后如果想要调用scanf函数时,一律可以使用scanf_s代替,这样Visual Studio 2022就不会报警。
但是,scanf_s是Visual Studio 2022自定义的函数,如果我们想要在其他编译器中编译程序,可能还会出现错误警告的问题,只能说是治标不治本。
方法二:使用_CRT_SECURE_NO_WARNINGS 1
第二种方法就是我们在源文件的最开头加上下列描述
#define _CRT_SECURE_NO_WARNINGS 1
加上这段话后,我们可以看到程序可以正常编译使用
但是这里有很多朋友可能跟我一样比较懒,不想每次编写程序的时候都再写一遍这段话,那么有没有什么简单的方法呢?这里请看方法三
方法三:修改newc++file.cpp文件(推荐)
这里我们打开此(我的)电脑,在搜索框中搜索newc++file.cpp,我们打开其路径,可以看到如图所示:
这里我们复制newc++file.cpp文件至桌面上,右键打开方式,我们选择用记事本(其他文本编辑器也可)打开。在打开的文件中输入
#define _CRT_SECURE_NO_WARNINGS 1
如图所示
保存后退出。
我们把桌面上这个文件复制,在原本的文件夹位置粘贴,替换原本的newc++file.cpp文件。
这样我们每次新建源文件的时候,就会自动在文件的开头添加#define _CRT_SECURE_NO_WARNINGS 1
了。
方法四:添加#pragma warning(disable: 4996)命令
如标题所示,我们可以在主函数前面添加#pragma warning(disable: 4996)
命令,这样就可以无视警告,继续使用scanf函数了。
关于文件搜索速度慢的解决方案
这里我们推荐一个好用的软件:Everything,我们可以点击这个超链接,进入其官网下载安装版使用。在安装这个软件的过程时,可以设置开机自启,这样就大大减缓了重新加载的时间。如果你正在使用utools,那么我也推荐utools和Everything,可以很大程度上提升工作效率。
下面是这两款 工具的下载链接,有需要的朋友可以下载一试:
Everything:https://www.voidtools.com/zh-cn/
utools:https://www.u.tools/