目录

昨天在使用Visual Studio 2019编写C语言程序时遇到了scanf返回值被忽略问题

因为我也是刚开始学习C语言,第一次遇到这种问题,也不知道怎么回事,然后就上Chrome研究了一番,才知道原因,并且找到了几种分散在个个角落的解决方法,我在这里归纳总结一下。

问题原因:

在ANSI C中只有scanf(),没有scanf_s(),但是scanf()在读取时不检查边界,所以可能会造成内存泄漏。于是Microsoft公司在VS编译器中提供了scanf_s(),如果想继续使用scanf这个不安全的函数,可以通过以下方法解决。

方法①:

把scanf改成:scanf_s

这是VS编译器特有,既然觉得scanf()不安全,那它就自己定义了一个scanf_s()。

方法②:

编译器错误提示的原因至于VS中的SDL检查,只需要找到它并关闭就可以了。

关闭步骤:右键“项目文件” —— “属性” —— “配置属性” ——“C/C++”——“常规”——“SDL检查”改为“否”即可,如图所示

改为否后,再次编译就没问题了。

方法③:

在C语言程序开头添加代码:#pragma warning(disable:4996)

//全部关掉

(或者)

在C语言程序开头添加代码:#pragma warning(once:4996)

//仅显示一个

方法④:

在C语言程序开头添加代码:#define _CRT_SECURE_NO_WARNINGS

//忽略安全检测

每次都要加这么一串代码,是不是感觉有点费力??(我一开始找到这种方法的时候第一感觉也是这样的)

其实不用那么麻烦,这里还可以细分为两种方法:

(1)我们只需要在VS中加入 _CRT_SECURE_NO_WARNINGS 这个宏就可以了,具体操作如下图所示:

(2)在VS2019的安装路径下找到“newc++file.cpp”这个文件,用记事本的方式打开,并把这行代码复制粘贴上去,然后保存即可,这样以后每次新建.c源文件的时候这行代码就会自动出现在第一行。

【注意】如果在保存的时候出现“拒绝访问”的情况,可以测试下载安装一个工具“Notepad++”,然后以管理员的身份运行这个软件,用这个软件打开上面提到的“newc++file.cpp”文件,复制粘贴代码上去后,保存即可。

最后提到的这两种都是一次搞定,后面都不用再弄了。

我个人偏向于方法④的第(1)种方法。我也比较推荐你使用这种方法——毕竟简单而且可以说是一劳永逸

VS2019中scanf返回值被忽略的问题及其解决方法的更多相关文章

  1. ajax返回值中有回车换行、空格解决方法

    最近在写一个页面,用jquery ajax来实现判断,刚写好测试完全没有问题,过了两天发现出现问题,判断不成了.后来发现所有alert出来的返回值前面都会加若干换行和空格.(至今不明白,同一台电脑,同 ...

  2. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_8 Mybatis中的返回值深入-调整实体类属性解决增和改方法的报错

    如果实体类和数据库表内的字段没有保持一致 修改了属性子弹. 重新生成getter和setter还有toString方法 测试类里面,相关set的方法就都会报错. 只需要修改为最新的set方法就可以了. ...

  3. Antd中,Select 中value设值,导致placeholder不生效解决方法

    <Select key="sm2" placeholder="姓名" showSearch={true} allowClear={true} showAr ...

  4. VS 返回值被忽略的解决方法

    •问题 用 Visual Studio 编写 C++ 代码的时候,一旦用到 scanf , freopen 等函数的时候,编译器总会不合时宜的给你提示 "返回值被忽略",那么该如何 ...

  5. scanf返回值问题

    在家养病,闲着没事看C primer plus,看到书中对于scanf输入的判断,常用如下方法: 此时它将返回1视为我输入成功,如果不为1则视为输入失败.那到底scanf的返回值具体指的是什么呢? 例 ...

  6. Asp.net MVC 中Controller返回值类型ActionResult

    [Asp.net MVC中Controller返回值类型] 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必 ...

  7. [改善Java代码]不要在finally块中处理返回值

    在finally代码块中处理返回值,这是在面试题中经常出现的题目.但是在项目中绝对不能再finally代码块中出现return语句,这是因为这种处理方式非常容易产生"误解",会严重 ...

  8. Controller 中Action 返回值类型 及其 页面跳转的用法

        •Controller 中Action 返回值类型 View – 返回  ViewResult,相当于返回一个View 页面. -------------------------------- ...

  9. robot framework中的返回值

    1.若想要再setup中有返回值,给后续的操作使用 A)在setup的关键词中需要的返回值,设置为global variable或者suit variable:如下图:但是在编译器中,会报错,但是执行 ...

随机推荐

  1. 关于MVC中 服务器无法在发送 HTTP 标头之后修改 cookie此类问题的解决

    处理方法 使用过滤器控制权限时,若无权则跳转到无权页面,但是每次跳转都会出现 ERROR - System.Web.HttpException (0x80004005): 服务器无法在已发送 HTTP ...

  2. [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks

    [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...

  3. List<bean> 转换成List<Map>

    //将listmap转换成list实体类 List<OaAttachment>list=new ArrayList<OaAttachment>(); if(Func.isNot ...

  4. [leetcode]48RotateImage二维数组翻转

    import java.util.Arrays; /** * You are given an n x n 2D matrix representing an image. Rotate the im ...

  5. Ubuntu安装最新的SlickEdit软件--破解教程

    最近主要工作系统转到LInux上面来了,Slickedit的安装破解也费了些事,今天将过程整理一下做个记录. 说明:SlickEdit pro V21.03 Linux 64位实测可用,MAC实测可用 ...

  6. 01 . Go之从零实现Web框架(类似Gin)

    设计一个框架 大部分时候,我们需要实现一个 Web 应用,第一反应是应该使用哪个框架.不同的框架设计理念和提供的功能有很大的差别.比如 Python 语言的 django和flask,前者大而全,后者 ...

  7. JDBC UPDATE误区

    1 package com.lykion; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import ...

  8. Servlet3.0提供的@WebServlet注解引用参数详情介绍

    Servlet3.0提供的@WebServlet注解: servlet3.0所提供的@webservlet注解,用来将某个类注解为一个servlet类,简化了web.xml上的servlet配置, @ ...

  9. 用漫画的形式展现——URL和HTTP

    http请求内容:请求头:get.post等发送请求(其他:head.put.delete.option) host 地址 user-Agent cookie 通行证 head:与get请求类似,不同 ...

  10. 7.24,《C Primer Plus》复习第十五章第二小题

    编写一个程序,通过命令行参数读取两个二进制字符串,对这两个二进制数使用~运算符,&运算符.|运算符,并以二进制字符串形式打印结果(如果无法使用命令行环境,可以通过交互式让程序读取字符串) 编写 ...