strdup()
函数是一个标准C库函数,通常用于动态分配内存并复制一个给定的字符串到新分配的内存中。该函数在字符串的末尾会自动添加一个空字符\0
。
要使用strdup()
函数,需要包含<string.h>
头文件。该函数的原型如下:
char *strdup(const char *str);
- 参数
str
是一个指向以\0
结尾的字符串的指针,即要复制的字符串。 - 函数返回一个指向新分配的字符串的指针,该字符串与参数
str
相同。
下面是strdup()
函数的用法示例:
#include <stdio.h>
#include <string.h>
int main()
{
const char *original = "Hello, World!";
char *duplicate = strdup(original);
if (duplicate != NULL)
{
printf("Original string: %s\n", original);
printf("Duplicated string: %s\n", duplicate); // 使用完毕后需要释放动态分配的内存 free(duplicate);
}
else
{
printf("Memory allocation failed.\n");
}
return 0;
}
在上面的示例中:
- 我们声明了一个原始字符串
original
。 - 使用
strdup()
函数将原始字符串复制到新的字符串duplicate
中。 - 检查是否成功分配内存,并输出原始字符串和复制后的字符串。
- 最后,使用
free()
函数释放duplicate
指向的内存,以避免内存泄漏。
注意,strdup()
函数在某些非标准的C库中可能不可用,因此在使用时应谨慎考虑跨平台兼容性。