
在C语言中,字符串复制的方法有strcpy()函数、strncpy()函数、手动循环复制等,这些方法各有优劣,选择合适的方法能提高代码的健壮性和效率。 其中,strcpy()是最常见的方法之一,但它没有进行边界检查,容易导致缓冲区溢出。我们将详细介绍strcpy()、strncpy()以及手动循环复制的方法。
一、使用strcpy()函数
strcpy()函数是C标准库中提供的一个函数,用于将源字符串复制到目标字符串。其函数原型如下:
char *strcpy(char *dest, const char *src);
该函数的参数包括目标字符串指针dest和源字符串指针src。使用strcpy()的一个典型示例如下:
#include <stdio.h>
#include <string.h>
int main() {
char src[40];
char dest[100];
strcpy(src, "This is tutorialspoint.com");
strcpy(dest, src);
printf("Final copied string : %sn", dest);
return 0;
}
优点:
- 简单易用,代码简洁。
缺点:
- 没有边界检查,容易导致缓冲区溢出。如果目标字符串的空间不足,将会覆盖相邻内存区域,导致程序崩溃或不安全。
二、使用strncpy()函数
strncpy()函数是strcpy()的安全版本,它允许指定最多复制的字符数。其函数原型如下:
char *strncpy(char *dest, const char *src, size_t n);
该函数的参数包括目标字符串指针dest、源字符串指针src以及要复制的最大字符数n。示例如下:
#include <stdio.h>
#include <string.h>
int main() {
char src[40];
char dest[12];
strcpy(src, "This is tutorialspoint.com");
strncpy(dest, src, sizeof(dest) - 1);
dest[sizeof(dest) - 1] = '