visual studio报错:error C4996: ‘scanf‘
文章目录
- 前言
- 原因
- 解决方法
- 方法一:使用scanf_s
- 方法二:在include前面添加宏定义,注意是在最前面添加,如下图
- 方法三:添加头部文件,在include前后皆可
- 方法四:找到newc++file.cpp文件
前言
visual studio排错笔记,使用visual运行代码时,出现如下报错:
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_s。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅联机帮助。
测试代码:
#include <stdio.h>
#define PRAISE "You are an extraordinary being."
int main(void)
{char name[40];printf("What's your name? ");scanf("%s", name);printf("Hello, %s.%s\n", name, PRAISE);return 0;
}
原因
visual studio编译器认为scanf函数是不安全的,所以即使你引入了头文件,但是编译器还是认为它是不安全的,所以会出现该错误
解决方法
方法一:使用scanf_s
VS系统提供了scanf_s()。在调用该函数时,必须提供一个数字以表明最多读取多少位字符。
很多带"_s"后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d[20];写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提高。
所以使用scanf_s时,我们大致给name一个要占的字符数,如下所示
#include <stdio.h>
#define PRAISE "You are an extraordinary being."
int main(void)
{char name[40];printf("What's your name? ");scanf_s("%s", name, 20);//给name大致大致要占的字符数为20printf("Hello, %s.%s\n", name, PRAISE);return 0;
}
方法二:在include前面添加宏定义,注意是在最前面添加,如下图
#define _CRT_SECURE_NO_WARNINGS
例:
方法三:添加头部文件,在include前后皆可
#pragma warning(disable:4996)
例:
方法四:找到newc++file.cpp文件
绝对路径示例:D:\sw-Microsoft Visual Studio\2019\Community\Common7\IDE\VC\VCProjectItems
在里面添加指定头部文件,这样每次新建的文件都会包含该头部文件,注意,这个文件是没有权限修改的,可以使用txt修改完后,替换他再改名即可
visual studio报错:error C4996: ‘scanf‘相关推荐
- VS2013运行报错error C4996: 'scanf': This function or variable may be unsafe.
报错内容: 1>------ Build started: Project: 约瑟夫问题, Configuration: Debug Win32 ------ 1> 约瑟夫问题.cpp 1 ...
- VS2015 scanf 函数报错 error C4996: 'scanf'
错误提示:error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. ...
- 关于c语言报错error C4996: ‘scanf‘: This function or variable may be unsafe.
关于c语言scanf 这里记录一下复习c语言数据结构时遇到的一些问题: 在VS中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: int x; /*循环输入顺序栈元素用*/D ...
- VC2019编译报错 error C4996: This function or variable may be unsafe
[问题描述] 使用新安装的VS2019编译C代码保报错error C4996: 'sprintf': This function or variable may be unsafe. Consider ...
- android studio报错Error:Project with path 'XXXX' could not be found解决办法
刚从服务器上剪下来的工程编译死活报 project with path '... ' could not be found in project ' app' 这个错, 找不到依赖库,可是检查工程里面 ...
- android studio报错 ERROR: Cause: executing external native build for cmake
最近在使用android studio编辑项目的时候,出现 "ERROR: Cause: executing external native build for cmake"的报错 ...
- [Android Studio]报错error:failed linking references的解决方案以及有关gradle和sdk版本号的思考
最近在用android studio开发app的过程中,总是遇到类似"error:failed linking references"的报错,让人很是苦恼,心态差点被搞崩,经过上网 ...
- VisualGDB导致Visual Studio报错:未能从程序集Package.LanguageService中加载类型xxx
文章目录 0. 前言 1. 出现这个问题的具体报错 2.解决方法 3.具体激活过程 到此为止,VisualGDB激活完成,同时作者不欢迎把激活器转到需要积分才能下载的地方去,请切勿干这件事情 要是觉得 ...
- Visual Studio报错解决方案:对路径...的访问被拒绝cmd.exe已退出,代码为3
错误描述: 在将一台电脑上建立的项目或解决方案拷贝到另一台电脑上使用时,当项目内部有需要访问的路径时,有时会出现对路径访问被拒绝的问题,类似于如下情况: 之前遇到这种情况之后上网搜寻了各种办法,试了一 ...
最新文章
- 《数据结构》是计算机应用,《数据结构》期中测试-2014计算机应用技术用.doc
- java.lang.ClassCastException: [B cannot be cast to java.lang.String
- EasyExcel读取文件异常,报 java.lang.NoClassDefFoundError,/x2006/main/CTTableStyles
- 牛客网(剑指offer) 第五题 用两个栈来实现一个队列
- 管理服务器一般的作用,管理服务器作用
- 【招聘(北京)】北京华光普泰生物招聘.NET软件开发
- c++rpg黑框游戏_NO总本色出演断智大师兄,电竞魔音主C人《超级猎杀》一战成名...
- 你真的了解iOS怎么取属性的吗?
- 控制抽象之简化客户代码
- 一个简单的WPF字体选择器实现
- 识别率惊人的 GitHub 口罩检测 | 原力计划
- linux文件移出目录命令_Linux移动文件命令F01
- c语言图书信息管理系实验心得,C语言图书信息管理系统实验报告.doc
- 【SBUS,串口DMA】用STM32F407的串口DMA读取SBUS接收机信号
- 自动登录163邮箱的批处理
- 计算机太极图怎么设计,AI绘制太极图两种方法介绍
- Java的内心世界和外部世界协调的统一
- 软件测试cpu性能测试案例,性能测试之用例得分评价和 CPU 内存数据监控——谈谈个人看法和实践总结...
- 在unity中更改天空盒的几种方式
- 如何将 Visual Paradigm 桌面客户端连接到不同的 VP Online 存储库丨使用教程