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; }