带你分析C语言代码背后的细节(二): scanf_s()函数与scanf()函数

本文介绍了在VS2019中,由于安全考虑,scanf()函数被替换为scanf_s(),并分析了两者的区别。通过示例,展示了如何正确使用scanf_s(),强调了安全输入的重要性。同时,讨论了在某些情况下,scanf()仍可正常工作,但不推荐混用。文章鼓励初学者重视代码的可移植性和安全性。
摘要由CSDN通过智能技术生成

如果你和我一样用的是VS2019(或者VS2005之后的版本),那么你需要知道scanf()函数的名称更改为scanf_s()了,如果你用scanf(),编译时C就会向你发出错误提醒,点击错误码C4996会跳转到帮助网页,在那里会有详尽的解释。下图是官网对名称修改的解释,注意到一句话“如果需要使用现有函数以实现可移植性,则可以关闭这些警告”,根据官网提供的办法之一,我在主程序的最前面插入以下代码:

#pragma warning(disable : 4996)

依旧使用scanf()名称,编译运行顺利。到这里,如果你是像我一样的初学者,你可能会问为什么不改成scanf_s()呢?为什么官网提供将错就错的办法而不是让我们乖乖改成scanf_s()呢?这就跟C的可移植性有关系了。C语言是可移植的语言,在一种系统中编写的C程序稍作修改或不修改就能在其他系统运行。初学C的我还没学到,就先提醒大家可移植性是非常非常重要的。

回到最初的话题,当你照着书上的例子敲代码并快快乐乐地运行时,就会被微软的错误提醒打脸,我们再来看看那个提醒:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值