strdup函数的用法
时间: 2023-07-01 11:11:19 浏览: 38
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函数释放内存。
相关问题
写段代码举例strip()函数用法
好的,以下是一个使用 strip() 函数的例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = " Hello, World! ";
printf("原始字符串: '%s'\n", str);
// 去除字符串两端的空格
char* trimmed = strdup(str);
trimmed = strtok(trimmed, " \t\n\r");
trimmed = strtok(trimmed, " \t\n\r");
printf("去除空格后的字符串: '%s'\n", trimmed);
return ;
}
```
这个程序会输出以下内容:
```
原始字符串: ' Hello, World! '
去除空格后的字符串: 'Hello, World!'
```
在这个例子中,我们使用了 `strdup()` 函数来复制原始字符串,然后使用 `strtok()` 函数来去除字符串两端的空格。注意,我们需要调用两次 `strtok()` 函数来去除两端的空格。
incompatible implicit declaration of built-in function 'strdup'
这个错误通常是由于没有包含正确的头文件而导致的。在 C 语言中,`strdup` 函数的原型声明在 `string.h` 头文件中,因此您需要在代码中添加以下行:
```c
#include <string.h>
```
如果您已经包含了 `string.h` 头文件,但仍然出现该错误,则可能是因为您正在使用过时的编译器。在这种情况下,您可以手动声明 `strdup` 函数,例如:
```c
char *strdup(const char *s);
```
请注意,这种方法可能不适用于所有编译器和操作系统。在实际开发中,最好使用正确的头文件并遵循标准函数原型声明。