VS编译器对scanf函数不安全报错的解决办法(详细步骤)

简介: VS编译器对scanf函数不安全报错的解决办法(详细步骤)

前言

为什么同一份代码在Dev-c++编译器中能正常运行,而在VS中则报错呢?

原因:scanf此函数或变量可能不安全,要禁用弃用,所以上诉代码在VS中会报错


解决方法

方法一:

scanf替换为scanf_s (不推荐)


scanf_s这个函数仅仅是VS这个编译器提供的,如果把代码放到其他编译器可能会编译不过,这个时候会出现一些跨平台的问题。

方法二:

定义预定义符号_CRT_SECURE_NO_WARNINGS

在代码第一行输出:

#define _CRT_SECURE_NO_WARNINGS


一劳永逸的方法

可以让每一次新建的源文件中就包含这句代码:

方法:在VS的安装路径下搜索:newc++file.cpp这个文件


在文件中加上:

#define _CRT_SECURE_NO_WARNINGS

以后创建的的新的.c或者.cpp文件中都会自动有这句代码。

PS:如果觉得系统的搜索太慢的,可以下载Everything这个软件


方法三:

设置项目属性的预处理

打开工程的【解决方法资源管理器】->【属性】


在属性页中:

【属性配置】->【C/C++ ->预处理器】->【预处理定义】中增加:

_CRT_SECURE_NO_WARNINGS,每个符号都用分号隔开的

然后应用就可以了。


这种方法,每次项目都要设置,比较麻烦。

总结

个人推荐使用方法二,一劳永逸。


相关文章
|
存储 编译器 C++
关于“VS2022无法打开头文件<graphics.h>” 以及编译时 “没有与参数列表匹配的重载函数实例”俩个问题的解决思路
关于“VS2022无法打开头文件<graphics.h>” 以及编译时 “没有与参数列表匹配的重载函数实例”俩个问题的解决思路
2862 0
|
25天前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
31 5
|
编译器 文件存储 C++
一劳永逸的方法解决函数scanf报错问题
一劳永逸的方法解决函数scanf报错问题
170 0
|
安全 C语言 C++
VS中使用scanf函数报错如何解决?
VS中使用scanf函数报错如何解决?
58 0
|
编译器 Linux 测试技术
【C/C++】C语言工程转C++工程,去除旧代码中的警告和错误
将 C语言项目转为C++项目更新维护,处理旧代码中的警告和错误
501 0
|
安全 编译器 C语言
VS编译器警告scanf未定义的三种解决办法
我们开始学习编程时候上手第一门语言通常是C语言,我们还需要下载一个编译器,最常见的莫过于Microsoft公司开发的Visual Studio(下面都简称VS)系列编译器,但是VS中我们使用scanf等函数时语句总是报错,显示不安全。
VS编译器警告scanf未定义的三种解决办法
|
编译器 C语言 C++
scanf返回值被忽略的原因及其解决方法(vs2019)
scanf返回值被忽略的原因及其解决方法(vs2019)
839 0
|
编译器 C++
5秒教你一劳永逸解决vs中scanf等函数无返回值的问题
5秒教你一劳永逸解决vs中scanf等函数无返回值的问题
140 0
|
芯片 C++
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
1255 0
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”