strdup 函数
strdup 函数是 C 标准库中的一个函数,用于复制一个字符串。它的全称是 "string duplicate"。这个函数在 <string.h> 头文件中声明。strdup 函数会分配足够的内存来存储源字符串的副本,并将源字符串的内容复制到新分配的内存中。然后返回指向新字符串的指针。
以下是 strdup 函数的原型:
char *strdup(const char *s);
参数
- s:指向要复制的源字符串的指针。
返回值
- 成功时,返回指向新分配的字符串副本的指针。
- 如果内存分配失败,则返回 NULL。
示例代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
const char *original = "Hello, World!";
char *duplicate = strdup(original);
if (duplicate != NULL) {
printf("Original: %s\n", original);
printf("Duplicate: %s\n", duplicate);
free(duplicate); // 记得释放分配的内存
} else {
printf("Memory allocation failed\n");
}
return 0;
}
注意事项
- strdup 函数使用 malloc 来分配内存,因此需要使用 free 函数来释放这块内存,以避免内存泄漏。
- strdup 不是 C89 标准的一部分,但在 POSIX 和一些 C99 实现中是可用的。如果在某些平台上不可用,可以自己实现一个类似的函数。