在C中,我有两个字符数组:
char array1[18] = "abcdefg";
char array2[18];
如何将array1
的值复制到array2
?我能这么做吗:array2 = array1
?
在C中,我有两个字符数组:
char array1[18] = "abcdefg";
char array2[18];
如何将array1
的值复制到array2
?我能这么做吗:array2 = array1
?
您不能直接执行array2 = array1
,因为在本例中,您操作的是数组(char *
)的地址,而不是它们的内部值(char
).
从概念上讲,您要做的是迭代源(array1)的所有字符,并将它们复制到目的地(array2).有几种方法可以做到这一点.例如,您可以编写一个简单的for循环,或者使用memcpy
.
也就是说,字符串的推荐方法是使用strncpy
.它可以防止常见的错误,例如buffer overflows(如果用户输入的是键盘、网络等,则填写array1
尤其危险).就像这样:
// Will copy 18 characters from array1 to array2
strncpy(array2, array1, 18);
正如@Falken教授在 comments 中提到的,strncpy
can be evil.确保目标缓冲区足够大,可以容纳源缓冲区(包括字符串末尾的\0
).