📜  C C++中的strdup()和strndup()函数(1)

📅  最后修改于: 2023-12-03 14:59:36.074000             🧑  作者: Mango

strdup()和strndup()函数

简介

strdup()函数 和 strndup()函数是C和C++库函数中的字符串处理函数,它们可用于复制字符串。字符串是由连续的字符组成的,以null字符('\0')结尾。

strdup()函数 和 strndup()函数用于复制一个字符串。创建一个字符串副本的任务通常是创建一个新的字符串并将现有字符串的字符复制到它。这可以通过手动内存分配、字符拷贝循环等方式完成。但是, strdup()strndup()为程序员提供了一种快速、容易和可靠的字符串复制方法,它简化了复制字符串并降低了代码错误的风险。

语法

strdup()函数

char* strdup(const char* str);

strndup()函数

char* strndup(const char* str, size_t n);
参数

strdup()函数

  • str:被复制的字符串。

strndup()函数

  • str:被复制的字符串。
  • n:要复制的最大字符数。
返回值
  • strdup()函数:成功则返回指向新分配的字符串的指针,否则返回NULL。
  • strndup()函数:返回指向新分配的字符串的指针,否则返回NULL。
例子1
#include <string.h>
#include <stdio.h>
int main()
{
    char* str1 = "Hello World!";
    char* str2 = strdup(str1);
    printf("Original String: %s\n", str1);
    printf("Copied String: %s\n", str2);
    free(str2);
    return 0;
}

上述代码将输出以下内容:

Original String: Hello World!
Copied String: Hello World!
例子2
#include <string.h>
#include <stdio.h>
int main()
{
    char* str1 = "Hello, World!";
    char* str2 = strndup(str1, 5);  //只复制5个字符
    printf("Original String: %s\n", str1);
    printf("Copied String: %s\n", str2);
    free(str2);
    return 0;
}

上述代码将输出以下内容:

Original String: Hello, World!
Copied String: Hello
总结

strdup()strndup()为程序员提供了一种快速、容易和可靠的字符串复制方法,它们简化了复制字符串并降低了代码错误的风险。在使用这两个函数时,注意内存分配和释放。如果在分配内存之后,在程序执行完后不释放分配的内存,将会导致内存泄漏。因此,使用完毕后,必须释放分配的内存,以免对系统造成损害。