VsStudio中scanf返回值被忽略的原因及其解决方法

article/2025/9/12 17:52:02

相信有不少人在使用vs的时候会遇到以下这个问题:scanf返回值被忽略,接下来我就告诉大家该如何解决这个问题

在这里插入图片描述

出现问题的原因:

  因为scanf()在读取数据时不检查边界,所以可能会造成内存泄漏。Microsoft公司觉得这个函数不安全,于是自己在VS编译器中提供了scanf_s()这个函数,这个函数提供了边界限制。想解决这个报错异常有以下几种方法:

方法一(不推荐!):

  将scanf改为scanf_s即可解决这个问题,效果如下所示:
在这里插入图片描述
  虽然这种方法可行,但是在这里不推荐使用这种方式,因为编写程序要保证其有良好的可移植性,scanf_s这个函数是Microsoft自己定义的,在ANSI C中只有scanf(),没有scanf_s(),所以如果跨平台移植的话代码很可能会报错,找不到scanf_s这个函数,在移植时需要更改,这样的代码就失去了良好的可移植性,所以不做推荐。

方法二(推荐):

在代码的第一行加入这句话:

#define _CRT_SECURE_NO_WARNINGS  1

  这句话的意思是代码不进行SDL安全检查,这样就不会报错了,但是细心的人会发现,代码还是会有警告
在这里插入图片描述
  显然作为一个合格的程序员我们是不容许任何一个警告的,在这里我也为大家提供了解决办法:
再加入这句话

#pragma warning(disable:6031)

这样就会忽略6031这个警告
在这里插入图片描述
现在我们的代码就非常的完美了。
  但是可能还有人问了,每次都这么添加不是很麻烦吗?所以这里我为大家提供了一劳永逸的方法:
打开VS安装路径下的这个文件:
在这里插入图片描述

D:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\VCProjectItems

  不同版本的路径也会有所不同,我这里是VS2022的路径,不同版本的路径可能不同,但是文件名是一样的,所以可以选择在文件夹中搜索newc++file.cpp这个文件。
打开文件后我们将这两句话复制进去后并且保存

#define _CRT_SECURE_NO_WARNINGS  1
#pragma warning(disable:6031)

如下:
在这里插入图片描述
  这样之后我们创建一个新的.c文件它就会自动书写在文件的开头了。
以上就是关于scanf返回值被忽略的原因及其解决方法的所有内容了。


2022-11-07

  有好些人私信反应说 newc++file.cpp 这个文件不能修改,或者没有管理员权限修改,要么是就是修改后不能保存,这里是我疏忽了,我在我这里演示两种修改并保存的方法:

第一种:编辑器,如NotePad++

在这里插入图片描述

  使用NotePad++打开,进行更改后会有这个提示,选择管理员模式启动NotePad++即可保存更改,这个软件是免费的,平时查看代码等也挺好用的,大家可以下载一个试试:官方下载地址
  如果不想额外下载软件的话,可以看方法二

在这里插入图片描述

方法二:修改用户本身对这个文件的操作权限

  右击文件选择最底下的属性,然后切换到安全,选择Users用户(因为我们登录电脑时的身份是普通用户,并不是管理员)之后点击编辑
在这里插入图片描述

选中Users用户,将他的权限改为完全控制即可

在这里插入图片描述
  这样的话我们就对这个文件拥有了修改的权限,这样即使我们使用记事本打开,也不会提示我们无法无法修改,或者修改无法保存等。


http://chatgpt.dhexx.cn/article/ShqbtNp2.shtml

相关文章

VS2022 scanf返回值被忽略怎么办

scanf返回值被忽略怎么办,掌握了这个办法后,就再也不会有这个苦恼啦。 先在vs的安装路径里找到:newcfile.cpp文件,然后点击鼠标右键找到文件所在位置。 找到文件所在的位置后将该文件复制粘贴到桌面上然后在桌面将文件打开进行修…

浅谈scanf()函数的返回值

浅谈scanf()函数的返回值 1.scanf()函数的返回值为int类型 2.当为scanf(%d,&a); scanf(%c,&b); 等类型时,当输入值是有效的时候,返回值为1 3.当为scanf("%d%d%d",&c,&x,&v); 等类型时,当三个输入值是有效值时…

贪心算法小结

目录 贪心算法 例题 活动安排问题 背包问题 删数问题 多处最优服务次序 贪心算法 在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问…

贪心算法模板及详解

一、.活动选择问题 二、钱币找零问题 三、再论背包问题 四、多机调度问题 五、小船过河问题 六、区间覆盖问题 七、销售比赛问题 八、Huffman编码 九、Dijkstra算法 十、最小生成树算法 贪心算法的定义 贪心算法是指在对问题求解时,总是做出在当前看来是最…

贪心算法例题

贪心算法经典例题解析 贪心法:遵循某种规律,不断贪心的选取当前最优策略的算法设计方法。 例一:分糖果 已知一些孩子和一些糖果,每个孩子有需求因子g,每个糖果有大小s,当某个糖果的大小s > 某个孩子的需…

贪心算法(Java)

贪心算法 文章目录 贪心算法0、写在前面1、贪心算法的基本要素1.1 贪心选择性质1.2 最优子结构性质1.3 贪心算法与动态规划算法的差异 2、贪心算法的特点3、贪心法的正确性证明4、活动安排问题4.1 问题描述4.2 贪心法的设计思想4.3 两个反例 5、代码6、效率7、实例8、参考 0、写…

贪心算法(Java版本)

一、贪心算法 1、算法描述 贪心算法(Greedy algorithm),又叫做贪婪算法。 在对问题求解时,不从整体考虑,而是从问题的某一个初始解出发,每一步选择中都采取在当前状态下最好或最优的选择(局部…

Java贪心算法

1.Java贪心算法 1.1 贪心算法介绍 贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪心算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近…

C语言贪心算法

点击蓝字 关注我们 因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享 来源于网络,侵删 01 基本概念 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑&#…

python贪心算法

文章目录 贪心算法1、分发饼干问题(力扣455)2、无重叠区间(力扣435)3、分发糖果(力扣135)4、种花问题(力扣605)5、用最少数量的箭引爆气球(力扣452)6、划分字母区间(力扣…

算法-贪心算法

贪心算法 基本概念算法思想贪心算法就像周六晚上的动画片一样可遇不可求贪心解题步骤序列问题53. 最大子数组和 跳跃游戏55. 跳跃游戏跳跃游戏 II 分发糖果 基本概念 贪心算法又称贪婪算法,在对问题求解时,总是做出在当前看来是最好的选择。换句话说&am…

三大算法之三:贪心算法及其例题详解

目录 零.前言 1.区分贪心算法和动态规划 1.动态规划 2.贪心算法 3.共通点 2.贪心算法得到最优解的条件 1.具有优化子结构 2.具有贪心选择性 3.任务安排问题 1.问题定义 2.优化子结构 3.证明贪心选择性 4.总结 4.哈夫曼编码问题 1.问题定义 2.优化子结构 3.贪心…

一看就懂的贪心算法

如何理解贪心算法 我们先看一个例子 假设有一个可以容纳100kg物品的背包,背包可以装各种物品,我们有以下五种豆子,每种豆子的重量和总价值各不相同。为了让背包中所装物品的总价值最大,我们如何选择在背包中装哪些豆子&#xff…

从零开始学贪心算法

本文在写作过程中参考了大量资料,不能一一列举,还请见谅。 贪心算法的定义: 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优…

如何用wireshark过滤媒体流

进入媒体开发领域的同行来说,一般都会遇到媒体流过滤的问题。那么如何进行媒体流过滤呢? 首先是在媒体服务器的网卡上抓包。其次是获取到通话SIP信令的callid。并根据callid查到sip信令中SDP的IP和PORT。然后用callid及ip和port进行过滤,如果…

WireShark过滤器应用

在工作中我们常会用到wireshark抓取数据包进行分析,当使用wireshark默认设置时,会捕获到大量冗余的数据包,如果没有过滤器过滤,我们很难找到自己想要抓取的数据,这个时候就需要用到wireshark的过滤器来过滤&#xff0c…

Wireshark过滤器写法总结

目录 Wireshark提供了两种过滤器: 1、捕获过滤器 2、显示过滤器 过滤器具体写法 1、显示过滤器写法 1、过滤值比较符号及表达式之间的组合 2、针对ip的过滤 3、针对协议的过滤 4、针对端口的过滤(视传输协议而定) 5、针对长度和内…

Wireshark 过滤器使用

捕获过滤器: 在抓包之前就设定好过滤条件,然后只抓取符合条件的数据包。 显示过滤器: 在已捕获的数据包集合中设置过滤条件,隐藏不想显示的数据包,只显示符合条件的数据包。 过滤器比较符号 过滤ip和mac地址 ip 改成…

wireshark过滤规则详解

过滤器有两种: 一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录 一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置 保存过滤&#xff0c…

wireshark 过滤器规则

1、过滤 IP 如来源 IP 或目标 IP。 例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107 或者ip.addr eq 192.168.1.107 // 都能显示来源 IP 和目标 IP 2、过滤端口 例子: tcp.port eq 80 // 不管端口是来源的还是目标的都显示 tcp.port 80 tcp.port eq 2722 tcp.…