硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1240|回复: 3
收起左侧

[技术讨论] strncpy

[复制链接]

26

主题

394

回帖

472

积分

高级会员

积分
472
发表于 2023-2-23 17:24:10 | 显示全部楼层 |阅读模式
// sizeof(D) > strlen(S);  sizeof(D) > L
strncpy( D, S, L );

当 strlen(S) < L, 会把S的'\0'复制到D;
坑: 当 strlen(S) >= L, 不会将D[L]设为0, 要手动补0.  
应该是不知道缓冲区D的大小, 不敢贸然在D后面添加数据


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119449
QQ
发表于 2023-2-24 09:41:28 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

296

回帖

296

积分

高级会员

积分
296
发表于 2023-2-24 12:02:48 | 显示全部楼层
所以C11增加了strncpy_s。 strcpy和strncpy都需要自己提前进行判断,否则可能导致缓冲区溢出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-11-23 01:30 , Processed in 0.037404 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表