c语言——程序出现C4996:scanf 等错误的解决方法
c语言——程序出现C4996:scanf 等错误的解决方法(不用scanf_s替换解决)
- 问题实例
- 解决方法
- 方法1
- 方法2
在VS编译器下,编写的c语言程序在调试编译时可能会出现c4996警告或错误此类的反馈信息,在此根据自己的实践经验总结出了几个可以解决此类问题的方法。以下通过具体的例子进行叙述。
问题实例
下面展示一段简单的代码`:
int main()
{int age = 0;printf("请输入你的年龄:>");scanf("%d",&age);printf("你输入的年龄是:%d\n",age);return 0;
}
调试运行出现错误或警告提示:
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1> test.c
1>h:\2020c c++学习\classcode\test\test\test.c(24): 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> c:\program files (x86)\windows kits\10\include\10.0.10150.0\ucrt\stdio.h(1270): note: 参见“scanf”的声明
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
提示中说到用scanf_s去替换scanf可以解决问题,因此根据提示将代码中的scanf替换为scanf_s,调试后结果为:
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1> test.c
1> test.vcxproj -> H:\2020C C++学习\ClassCode\test\Debug\test.exe
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
可见这种方法确实可以解决问题。
但是,实际上scanf是c语言提供的函数,防范使用大多数的编译器,而scanf_s这个函数只是VS编译器提供的一个它自身认为安全的一个版本,在其他编译器下不一定适用,不建议使用。
解决方法
方法1
在报错的提示中提到:
To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
因此,源程序的最开头(头文件之前)加上一句代码:
#define _CRT_SECURE_NO_WARNINGS 1
调试编译后,问题解决:
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1> test.c
1> test.vcxproj -> H:\2020C C++学习\ClassCode\test\Debug\test.exe
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
为了避免在每次编写程序是都要认为地去添加上述一行代码,以下提供了使建立添加生成的源文件自动生成上述一行代码的方法:
自己安装的visual studio 路径--------->找到Microsoft Visual Studio 14.0并点击------->点击VC---------->点击vcprojectitems----------->右击new++file.cpp,用Notepad++打开--------->在文件中添加#define _CRT_SECURE_NO_WARNINGS 1并保存。以后新建的**.c文件只能够都会出现上述代码,可解决c4996出现的scanf、strcpy、strcat此类函数警告或报错的问题。
方法2
与方法1类似,在头文件之前添加以下一行代码也可解决问题:
#pragma warning(distable:4996)
若想让新建的.c文件自动出现上述一行代码,方法参看方法1中的方法过程。
c语言——程序出现C4996:scanf 等错误的解决方法相关推荐
- win10c语言0xc0000142,Win10应用程序无法正常启动0xc0000142错误的解决方法
近期,有win10用户遇到一个问题,打开Word软件出现了"应用程序无法正常启动0xc0000142"的错误提示,将电脑重启之后依然会出现该提示,再次尝试打开发现可以正常打开,并且 ...
- Win10应用程序无法正常启动0xc0000142错误的解决方法
近期,有win10用户遇到一个问题,打开Word软件出现了"应用程序无法正常启动0xc0000142"的错误提示,将电脑重启之后依然会出现该提示,再次尝试打开发现可以正常打开,并且 ...
- 天正安装autocad启动失败_正常安装autocad2013及2014后启动程序显示“应用程序无法正常启动(0xc000007b)错误的解决方法”...
正常安装 autocad2013/2014 后启动程序显示"应用程序无法正常启 动 (0xc000007b) 错误的解决方法" 安装完 autocad2013/2014 后,按照提 ...
- VS2005+ACCESS WEB程序出错数据访问权限错误的解决方法
最近使用VS2005+ACCESS写了一个网站管理系统,上传到服务器上后,在删除数据和新增加数据时总是出错,在本地调试又没有问题.经过检查,原来是服务器的数据库文件没有修改权限,修改数据库文件的访问权 ...
- 0x800700c1添加语言,Win10更新失败出现”0x800700C1“错误的解决方法
[文章导读]Win10系统是目前微软最新的一款操作系统,由于是比较新的一个系统版本,所以微软在这个系统上也花了不少心思,对于系统的优化甚是看重,使用过win10的用户大致都能感觉得到基本上系统每一个月 ...
- Win7/Win8 系统下安装Oracle 10g 提示“程序异常终止,发生未知错误”的解决方法...
我的Oracle 10g版本是10.2.0.1.0,(10.1同理)选择高级安装,提示"程序异常终止,发生未知错误". 1.修改Oracle 10G\database\stage\ ...
- 打印后显示发送服务器错误怎么办,跟后台打印程序系统服务通讯时出现错误的解决方法...
事件类型: 警告 事件来源: TermServDevices 事件种类: 无 事件 ID: 1114 日期: 2006-12-19 事件: ...
- 微信小程序【渲染层网络层错误】解决方法
问题场景: 利用微信小程序开发平台进行编写过程中,关于image组件使用,会出现图片无法加载问题,原本一个简单的问题却找了各种方法没有解决.此次问题出现使用的开发平台调试基础库版本为2.30.1,因为 ...
- 企业微信登录报错:应用程序无法正常启动(0xc0000142);Win10应用程序无法正常启动0xc0000142错误的解决方法
企业微信登录报错,有时候要点击多次才能登陆. 解决办法:创建一个文本,把下面一段复制进去,文本后缀改成.bat,启动运行一下即可. sc stop NSFFileCtl sc config NSFFi ...
最新文章
- bert推理速度太慢如何解决
- 21.单链表怎么就地逆序?
- html灵活响应 图片设置,jQuery轻量级响应式图片轮播插件ResponsiveSlides.js(仅1kb)
- chrome android 远程调试,chrome 远程调试
- 支持任意排序的分页存储过程
- 人工神经网络_图像加载(数据挖掘入门与实践-实验10)
- 浅谈PHP自动化代码审计技术
- Android——例子:屏幕切换
- GIMP中的新建Layer与更改Layer大小
- 线性代数拾遗(一):线性方程组、向量方程和矩阵方程
- Linux系统Bash的常用功能(9)
- 不要让人知道你是在笼络人心
- springboot显示信息并且修改_Spring Boot小结-03--增.删.改.查
- Requests 1.0 发布,Python 的 HTTP 客户端库
- C++ STL inner_product函数的使用方法
- 必须了解的一些IT知识点
- 【Kindle】Kindle免费推送网
- 学计算机用苹果本,新手小白用苹果电脑搞科研,学会这些才不至于尴尬!
- ROS学习笔记---ros的通信机制
- Typescript基础知识--学习笔记