fopen改写fopen_s

本文解决VS2017编译C++时遇到的C4996错误,详细对比fopen与fopen_s函数,指导如何避免安全警告并提供代码示例。

在使用VS2017编译C++工程时,遇到了:错误C4996    'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 

这里记录一下:

FILE* pFile = fopen(filename, "rb");

改为

FILE* pFile;

if(fopen_s(&pFile, filename, "rb"))

     return false;

当然也可以在工程里加入预处理器设置:_CRT_SECURE_NO_WARNINGS

两者比较:

1.fopen_s的安全是在于比函数fopen多了溢出检测; 
2.在使用上,函数fopen的返回值是文件指针,如果返回的文件指针为NULL时,则表示打开文件失败。而函数fopen_s的返回值是相应的错误代码,通过查看错误代码代表的含义,有助于排查问题。 
3.fopen_s打开的文件不能共享,如果你打开的文件需要共享的话,不能使用fopen_s函数。可以考虑_fopen,_wfsopen这两个函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值