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 等错误的解决方法相关推荐

  1. win10c语言0xc0000142,Win10应用程序无法正常启动0xc0000142错误的解决方法

    近期,有win10用户遇到一个问题,打开Word软件出现了"应用程序无法正常启动0xc0000142"的错误提示,将电脑重启之后依然会出现该提示,再次尝试打开发现可以正常打开,并且 ...

  2. Win10应用程序无法正常启动0xc0000142错误的解决方法

    近期,有win10用户遇到一个问题,打开Word软件出现了"应用程序无法正常启动0xc0000142"的错误提示,将电脑重启之后依然会出现该提示,再次尝试打开发现可以正常打开,并且 ...

  3. 天正安装autocad启动失败_正常安装autocad2013及2014后启动程序显示“应用程序无法正常启动(0xc000007b)错误的解决方法”...

    正常安装 autocad2013/2014 后启动程序显示"应用程序无法正常启 动 (0xc000007b) 错误的解决方法" 安装完 autocad2013/2014 后,按照提 ...

  4. VS2005+ACCESS WEB程序出错数据访问权限错误的解决方法

    最近使用VS2005+ACCESS写了一个网站管理系统,上传到服务器上后,在删除数据和新增加数据时总是出错,在本地调试又没有问题.经过检查,原来是服务器的数据库文件没有修改权限,修改数据库文件的访问权 ...

  5. 0x800700c1添加语言,Win10更新失败出现”0x800700C1“错误的解决方法

    [文章导读]Win10系统是目前微软最新的一款操作系统,由于是比较新的一个系统版本,所以微软在这个系统上也花了不少心思,对于系统的优化甚是看重,使用过win10的用户大致都能感觉得到基本上系统每一个月 ...

  6. Win7/Win8 系统下安装Oracle 10g 提示“程序异常终止,发生未知错误”的解决方法...

    我的Oracle 10g版本是10.2.0.1.0,(10.1同理)选择高级安装,提示"程序异常终止,发生未知错误". 1.修改Oracle 10G\database\stage\ ...

  7. 打印后显示发送服务器错误怎么办,跟后台打印程序系统服务通讯时出现错误的解决方法...

    事件类型:      警告 事件来源:      TermServDevices 事件种类:      无 事件 ID:      1114 日期:          2006-12-19 事件:   ...

  8. 微信小程序【渲染层网络层错误】解决方法

    问题场景: 利用微信小程序开发平台进行编写过程中,关于image组件使用,会出现图片无法加载问题,原本一个简单的问题却找了各种方法没有解决.此次问题出现使用的开发平台调试基础库版本为2.30.1,因为 ...

  9. 企业微信登录报错:应用程序无法正常启动(0xc0000142);Win10应用程序无法正常启动0xc0000142错误的解决方法

    企业微信登录报错,有时候要点击多次才能登陆. 解决办法:创建一个文本,把下面一段复制进去,文本后缀改成.bat,启动运行一下即可. sc stop NSFFileCtl sc config NSFFi ...

最新文章

  1. bert推理速度太慢如何解决
  2. 21.单链表怎么就地逆序?
  3. html灵活响应 图片设置,jQuery轻量级响应式图片轮播插件ResponsiveSlides.js(仅1kb)
  4. chrome android 远程调试,chrome 远程调试
  5. 支持任意排序的分页存储过程
  6. 人工神经网络_图像加载(数据挖掘入门与实践-实验10)
  7. 浅谈PHP自动化代码审计技术
  8. Android——例子:屏幕切换
  9. GIMP中的新建Layer与更改Layer大小
  10. 线性代数拾遗(一):线性方程组、向量方程和矩阵方程
  11. Linux系统Bash的常用功能(9)
  12. 不要让人知道你是在笼络人心
  13. springboot显示信息并且修改_Spring Boot小结-03--增.删.改.查
  14. Requests 1.0 发布,Python 的 HTTP 客户端库
  15. C++ STL inner_product函数的使用方法
  16. 必须了解的一些IT知识点
  17. 【Kindle】Kindle免费推送网
  18. 学计算机用苹果本,新手小白用苹果电脑搞科研,学会这些才不至于尴尬!
  19. ROS学习笔记---ros的通信机制
  20. Typescript基础知识--学习笔记

热门文章

  1. gitbook 入门教程之比较代码块差异 diff 插件
  2. 10款JavaScript 数据可视化库
  3. JavaScript+css+html通过点击右边眼睛的开关来控制密码显示还是隐藏
  4. 如何以最少的花费提高淘宝流量?
  5. ameya:发光二极管及条状发光二极管的区别
  6. 线程学习(三):线程的互斥
  7. 瑞吉外卖 04 CRUD 菜品 + 文件上传下载
  8. 袋鼠云与沃趣科技达成战略合作,共同驱动企业数字化升级
  9. roc曲线的意义_【科研助手】ROC曲线在医学诊断类稿件中的应用
  10. Android:项目模块化/组件化的架构之路(一)