1、使用 strcpy()
strcpy(dest, src)
会把 src
字符串(包括结尾的 \0
)复制到 dest
。目标数组 dest
必须有足够空间,否则会导致缓冲区溢出。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world!";
char dest[50]; // 目标数组需要有足够的空间
strcpy(dest, src); // 复制字符串
printf("Copied string: %s\n", dest);
return 0;
}
2、使用 strncpy()(更安全)
strncpy()
会最多复制指定的字节数。如果源字符串太长,不会自动添加 '\0'
,所以需要手动设置末尾字符。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world!";
char dest[20];
strncpy(dest, src, sizeof(dest) - 1);
dest[sizeof(dest) - 1] = '\0'; // 手动添加终止符,确保安全
printf("Copied string: %s\n", dest);
return 0;
}
3、手动复制字符
可以通过循环逐个字符复制。
#include <stdio.h>
int main() {
char src[] = "Hello, world!";
char dest[50];
int i = 0;
while ((dest[i] = src[i]) != '\0') {
i++;
}
printf("Copied string: %s\n", dest);
return 0;
}
4、不确定长度大字符串复制
如不确定字符串的长度,请始终分配足够的空间或使用动态内存分配。对于大字符串或者在堆上操作的字符串,可以使用 malloc() + strcpy()
。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *src = "Dynamic string";
char *dest = malloc(strlen(src) + 1);
if (dest) {
strcpy(dest, src);
printf("Copied string: %s\n", dest);
free(dest);
}
return 0;
}