📜  在C C++中复制字符串的不同方法(1)

📅  最后修改于: 2023-12-03 15:07:52.020000             🧑  作者: Mango

在C和C++中复制字符串是一个常见的操作。以下是一些不同的方法,可用于复制一个字符串。

1. strcpy()函数

strcpy()函数是最常用的函数,它可以将一个字符串从源地址复制到目标地址。以下是strcpy()函数的语法:

char *strcpy(char *dest, const char *src);

其中,dest是指向目标字符串的指针,src是指向源字符串的指针。

示例代码:

char source[] = "hello world";
char target[20];
strcpy(target, source);
printf("%s", target);
2. strncpy()函数

strncpy()函数与strcpy()函数类似,但是它可以指定要复制的字符数。以下是strncpy()函数的语法:

char *strncpy(char *dest, const char *src, size_t n);

其中,dest是指向目标字符串的指针,src是指向源字符串的指针,n是要复制的字符数。

示例代码:

char source[] = "hello world";
char target[20];
strncpy(target, source, 5);
target[5] = '\0';   //需要手动给结尾字符赋值
printf("%s", target);
3. memcpy()函数

memcpy()函数可以将一个内存块的内容复制到另一个内存块。以下是memcpy()函数的语法:

void *memcpy(void *dest, const void *src, size_t n);

其中,dest是指向目标内存块的指针,src是指向源内存块的指针,n是要复制的字节数。

示例代码:

char source[] = "hello world";
char target[20];
memcpy(target, source, strlen(source)+1);     //+1表示复制结尾字符
printf("%s", target);
4. strcpy_s()函数

strcpy_s()函数是较新的函数,它具有更好的安全性和可移植性,但是只能在支持C11标准的编译器上使用。以下是strcpy_s()函数的语法:

errno_t strcpy_s(char *dest, rsize_t destsz, const char *src);

其中,dest是指向目标字符串的指针,destsz是目标字符串的大小,src是指向源字符串的指针。

示例代码:

char source[] = "hello world";
char target[20];
strcpy_s(target, sizeof(target), source);
printf("%s", target);

以上就是在C和C++中复制字符串的不同方法。不同的方法适用于不同的场景,程序员应该根据具体的需求选择合适的方法。