用strncpy字符串拷贝时,出现警告:warning: 'strncpy' specified bound 32 equals destination size [-Wstringop-truncation]。
2、解决:strncpy不拷贝最后一个字节,手动给它赋值'\0'。
#define SIZE = 20;
char *a_str = "12345678";
char mybuff[SIZE];
strncpy(mybuff, a_str, SIZE-1);
mybuff[size-1] = '\0';
就不会报错了。
/home/tsrj/tsjdk8-project/tsjdk8-252/hotspot/src/share/vm/run
ti
me/arguments.cpp: In sta
ti
c member f
unc
ti
on ‘sta
ti
c void Arguments::fix_appclasspath()’:
/home/tsrj/tsjdk8-project/tsjdk8-252/hotspot/src/share/vm/run
ti
me/arguments.cpp:3459:12: err
In f
unc
ti
on ‘
strncpy
’,
inlined from ‘splitName’ at ../../src/pyi_la
unc
h.c:83:5,
inlined from ‘_ex
tr
act_dependency’ at ../../src/pyi_la
unc
h.c:215:9:
/usr/include/aarch64-linux-gnu
复制字符串中的字符
将source字符串中的前num个字符复制到
des
ti
nat
ion
中。若还没复制完num个字符就发现了source C字符串中包含的结尾符(也就是null字符),则
des
ti
nat
ion
会在此处填充0值,之后继续复制还没复制完的字符,直到复制完num个字符为止。
若source字符串不止num个字符,且nul
C
op
ies the first num characters of source to
des
ti
nat
ion
. If the end of the source C
string
(which is
signaled by a nu...
编译的时候有个
警告
:
首先第一个分析与尝试:
就是m_dir定义的长度是256,tmp的长度只定义了100,把m_dir复制给tmp,长度会被截断。解决就是把tmp也定义成256长度就可以了。
然而编译
警告
还是存在。第二个尝试方法:
把
strncpy
改成memcpy:
所以以后用
strncpy
的地方,都可以换成memcpy去实现。你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对