这应该复制一个字符串,但打印出乱码的结果。谁能帮我吗?
int main () {
const char *a = "Hello\n";
const char *b = "World\n";
strncpy(&b, &a, strlen(a));
printf("%s %s", a, b);
return 0;
}
我期待“Hello Hello”,但终端打印:
\
Hello
即使 strncpy 的签名,GCC 也会打印关于 a 和 b 具有不兼容指针类型的警告:
char * strncpy(char *s1, const char *s2, size_t n)
要求 2 个字符指针。那是因为数组总是 char** 如https://stackoverflow.com/a/20213168中所述?