1万
7万
11万
管理员
char buf[8]; strncpy(buf, src, 16);
char buf[8]; strncpy(buf, src, sizeof(buf) - 1); // 最多复制7字节 buf[sizeof(buf) - 1] = '\0'; // 手动补齐结尾
使用道具 举报
26
394
472
高级会员
tovinz 发表于 2025-10-10 09:49 strncpy https://forum.anfulai.cn/forum.php?mod=viewthread&tid=118087&fromuid=41790 (出处: 硬汉嵌入 ...
60
689
874
金牌会员
ou513 发表于 2025-10-10 10:14 印象中这情况编译的时候是有警告的,以前经常就觉得只要没有错误警告都是忽略的,进了几次坑后警告也要消除 ...
107
594
930
3
47
56
初级会员
spi-sd 发表于 2025-10-11 06:59 为啥buf才是8要复制16个字节,这种情况就算是memset和memcpy都会出错。 怎么发重复了,不需要审核了?
eric2013 发表于 2025-10-11 09:31 因为没有去看buf的实际大小,错误的记成了也是16字节大小。 这个算是个代码的示意效果,实际代码比较 ...
5
225
240
134
149
spi-sd 发表于 2025-10-11 10:54 strncpy(buf, src, sizeof(buf) - 1); // 最多复制7字节 buf = '\0';
Penguins 发表于 2025-10-12 01:14 '\0' 和 0x00 是完全等价的,可以写作 0x00。 sizeof 是关键字不是函数,除 C99 的可变长数组外,其他 ...
spi-sd 发表于 2025-10-12 16:07 感谢解答,我还以为这个也会去计算长度,原来是在编译的时候就定义好了吗?这算是常量?
本版积分规则 发表回复 回帖后跳转到最后一页
|小黑屋|Archiver|手机版|硬汉嵌入式论坛
GMT+8, 2025-11-22 02:05 , Processed in 0.049563 second(s), 24 queries .
Powered by Discuz! X3.4 Licensed
Copyright © 2001-2023, Tencent Cloud.