当前位置:   article > 正文

vs中scanf函数报错c4996说明及解决方案

c4996

c4996报错原因

对于C语言的初学者来说,使用vs2022(或是vs的其他版本)时,程序中涉及到 “scanf函数”,程序无法通过编译,报错:C4996

  1. int main()
  2. {
  3. printf("请输入成绩:");
  4. int score = 0;
  5. scanf("%d,", &score);
  6. printf("您的成绩为:%d\n", score);
  7. return 0;
  8. }

例如,通过vs2022对该程序进行编译时就会出现以下情况:

 编译器提示:”scanf”这个函数可能是不安全的,请考虑使用“scanf_s"进行替换或者通过使用

“_CRT_SECURE_NO_WARNINGS”让这个错误描述失效。

根据提示,我们有以下三种解决方案:

方法一:

使用“scanf_s”进行替换:

  1. int main()
  2. {
  3. printf("请输入成绩:");
  4. int score = 0;
  5. scanf_s("%d,", &score);
  6. printf("您的成绩为:%d\n", score);
  7. return 0;
  8. }

但是,使用“scanf_s”进行替换有一定的弊端,原因是:

“scanf_s”是vs这个IDE 所提供的函数,并非是C语言标准库中的函数,这就意味这”scanf_s“在其他编译器上无法通过编译,降低了代码的可移植性。 

方法二(推荐):

在源文件的第一行(注意,一定要在第一行)加入:

#define  _CRT_SECURE_NO_WARNINGS 

这时,C4996这个错误描述就会失效。程序可正常编译。

但是,每次新建源文件时,都需要添加这段代码会很麻烦。在这里,小编为大家提供一种一劳永逸的方法,我每次创建源文件时都会自动在第一行加上以上代码。

我们了解到通过vs 在项目中新建源文件时,源文件都来源于文件: newc++file.cpp

所以,我们可以通过修改该文件来实现方法二,具体步骤如下:

1.使用 everything等工具或者直接在电脑中搜索 newc++file.cpp文件

小编这里是使用everything进行查抄文件(超级好用!!!!)

 这里,我们复制一份该文件到桌面,因为直接进行修改的话,会被提示没有访问权限。

 复制到桌面后,鼠标右键该文件通过 "记事本“打开文件,输入:

#define  _CRT_SECURE_NO_WARNINGS 

保存后,将该文件复制到原来的文件夹粘贴,并选择替换目标中的文件。

大功告成,这时,你每次添加源文件的时候都会在首行自动加上:

#define  _CRT_SECURE_NO_WARNINGS 1

方法三:

直接针对该错误描述进行处理:

在程序前加上:#pragma warning(disable:4996)

例如:

  1. #pragma warning(disable:4996)
  2. int main()
  3. {
  4. printf("请输入成绩:");
  5. int score = 0;
  6. scanf("%d,", &score);
  7. printf("您的成绩为:%d\n", score);
  8. return 0;
  9. }

好哒,以上是vs中scanf函数报错c4996说明及解决方案,希望对您有所帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/932925
推荐阅读
相关标签
  

闽ICP备14008679号