C语言中常见不安全函数及其替换函数

C语言中的缓冲区溢出问题通常与不检查长度的字符操作函数有关,如strcpy()、strcat()、sprintf()和gets()。为解决这个问题,开发者应遵循避免使用这些函数的原则,寻找更安全的替代方案。
摘要由CSDN通过智能技术生成

       C语言中,大多数的缓冲区溢出问题可以直接追溯到标准C库。罪魁祸首就是因为不进行自变量检查的、有问题的字符操作(例如:strcpy()、strcat()、sprintf()、gets()等等)。一般来讲,像“避免使用strcpy()”和“永远不使用gets()”这样严格的规则在工作中经常遇到。

一、常见问题函数及其解决方案

函数 严重性 解决方案
gets 最危险 使用 fgets(buf, size, stdin)。这几乎总是一个大问题!
strcpy 很危险 改为使用 strncpy。
strcat 很危险 改为使用 strncat。
sprintf 很危险 改为使用 snprintf,或者使用精度说明符。
scanf 很危险 使用精度说明符,或自己进行解析。
sscanf 很危险 使用精度说明符,或自己进行解析。
fscanf 很危险 使用精度说明符,或自己进行解析。
vfscanf 很危险 使用精度说明符,或自己进行解析。
vsprintf 很危险
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值