【从零开始的C语言】Ep002 scanf安全问题的解决

对于VS编译器,scanf函数由于会存在溢出问题使代码报错并无法运行,一下提供4种解决方法

1、使用scanf_s函数

对于scanf函数不安全的问题,VS提供了scanf_s来代替scanf使用,通过检查输入数据边界来避免安全问题

优点

使用便捷

缺点

是VS提供的函数,在更改编译器后可能出现不能正常使用的问题

(在Ep001解决问题时使用到了该方法)

2.1、定义预定符号

在使用scanf报错时会有这样的错误提示

该串提醒在警告scanf存在风险,提示无法使用,但说到“使用 _CRT_SECURE_NO_WARNINGS”来解决,具体方法就是在最开始使用“#define _CRT_SECURE_NO_WARNINGS 1”来无视scanf的风险

缺点

但这样会导致每新建的项目想使用scanf时需要手动声明

2.2、自动定义预定符号

在VS安装路径中存在一个叫“new C++file.cpp”的文件,在其中写下“#define _CRT_SECURE_NO_WARNINGS 1”并保存可以使每次新建的C文件都会自带上这段代码

3、设置项目属性中的预处理器(不推荐)

右键当前项目,在属性中选择预处理器,在预处理器定义中加上一条“#define _CRT_SECURE_NO_WARNINGS 1”   注意:预处理器中条代码间应用分号隔开

缺点

麻烦,太麻烦了 而且个人感觉好像和2.1本质没有啥区别但是操作更麻烦了,可能就是可以直接在大项目离去定义,免得每个源文件都要写一遍吧qwq

4、在建立项目时的处理

新建项目时选择”Win32控制台“ 通过取消”预编译头“和”安全开发生命周期检查“来关闭VS对scanf不安全的限制以使用scanf

缺点

开发到一半咋整qwq,就还是用前面的方法吧 或者复制一遍代码过去hhh

5、部分参考资料

B站视频:BV1oi4y1g7CF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值