vs2022scanf报错问题
大家下完vs2022之后,开心的写下一段简单的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
scanf("%d", &a);
printf("%d", a);
return 0;
}
vs2022会毫不犹豫的报错,下面是报错信息:
翻译过来就是vs2022认为我们使用的scanf不安全,它建议我们使用scanf_s
下面我就将代码的scanf改为scanf_s
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
scanf_s("%d", &a);
printf("%d", a);
return 0;
}
使用完scanf_s后,果然一点问题都没有
那么问题来了,难道我们以后都需要写scanf_s才能完成编译吗?
假如我们导入一个项目到vs里面,需要一个个的把scanf_s进行修改吗?
这里有一个更好的方法, 在我们文件开头加上:#define _CRT_SECURE_NO_WARNINGS 1
加上之后,我们相当于无视了它的风险,可以正常使用scanf
下一步:找到newc++file.cpp文件,将#defnine _CRT_SECURE_NO_WARNINGS 1复制进去,这样我们每次新建项目都会有这段代码,省去了每次的人工添加.
这里我推荐Everything这个软件,Everything是一款由Voidtools开发的Windows平台下的快速文件搜索工具。它以其高效、简洁和强大的文件索引和搜索能力而广受用户欢迎。
下载官网--下载 - voidtools
大家自行选择版本下载安装就好了
下载完成之后打开,搜索newc++file.cpp,找到vs2022中的文件
右击打开路径
注意:
这里我们不能直接在记事本中编辑,会爆出没有权限的错误:
![]()
这里我们先拷贝一份到电脑桌面,完成编辑.
保存退出之后,复制桌面文件,再返回vs2022newc++file.cpp文件的路径下进行替换
替换成功后,我们新建一个项目就会有#define _CRT_SECURE_NO_WARNINGS 1