strdup
时间: 2023-09-05 20:10:33 浏览: 105
`strdup`是一个C语言标准库函数,其作用是将一个字符串复制到新的内存空间中并返回该空间的指针。这个函数会自动为新的字符串分配内存空间,因此使用完后需要手动释放该内存空间。 例如:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[] = "This is a string.";
char* new_str = strdup(str); // 复制字符串
printf("Original string: %s\n", str);
printf("New string: %s\n", new_str);
free(new_str); // 释放内存空间
return 0;
}
```
输出结果为:
```
Original string: This is a string.
New string: This is a string.
```
相关问题
C语言 strdup
`strdup`是C语言库函数,它主要用于复制字符串。这个函数在`string.h`头文件中定义,原型通常看起来像这样:
```c
char *strdup(const char *src);
```
`strdup(src)`接收一个指向常量字符数组的指针作为参数,然后创建一个新的动态内存块,将`src`所指向的字符串完整复制到新的内存区域,并返回这个新复制的字符串的地址。注意,由于返回的是指向堆上内存的新字符串,因此使用完毕后需要手动释放分配的内存,以防内存泄漏。
使用`strdup`的一个例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
const char* original = "Hello, World!";
char* copiedStr = strdup(original);
if (copiedStr != NULL) {
printf("Copied string: %s\n", copiedStr);
free(copiedStr); // 释放内存
} else {
printf("Memory allocation failed.\n");
}
return 0;
}
```
strdup函数的用法
strdup函数是C语言标准库中的一个字符串处理函数,其可以将一个字符串复制到一个新的内存空间,并返回这个新的内存空间的首地址。
函数原型为:
```c
char *strdup(const char *s);
```
参数s是需要被复制的字符串,函数返回一个指向新分配内存的指针,如果内存分配失败,则返回NULL。
示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = "Hello world!";
char *new_str = strdup(str);
if (new_str == NULL) {
printf("Error: Memory allocation failed!\n");
} else {
printf("Original string: %s\n", str);
printf("New string: %s\n", new_str);
free(new_str); // 释放内存
}
return 0;
}
```
输出结果为:
```
Original string: Hello world!
New string: Hello world!
```
需要注意的是,使用strdup函数分配的内存需要手动释放,否则会造成内存泄漏。可以使用free函数释放内存。
阅读全文