语法

#include <string.h>

char *strdup(const char *s);

char *strndup(const char *s, size_t n);
char *strdupa(const char *s);
char *strndupa(const char *s, size_t n);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

strdup():

_XOPEN_SOURCE>= 500 || / *自glibc 2.12起:* / _POSIX_C_SOURCE>= 200809L || / * Glibc版本

strndup():

Since glibc 2.10:
_POSIX_C_SOURCE>= 200809L
Before glibc 2.10:
_GNU_SOURCE

strdupa(),strndupa():_ GNU_SOURCE

遵循规范

strdup()符合SVr4、4.3BSD,POSIX.1-2001。 strndup()符合POSIX.1-2008。 strdupa()和strndupa()是GNU扩展。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
strdup(),strndup(),strdupa(),
strndupa()
Thread safetyMT-Safe

名称

strdup,strndup,strdupa,strndupa-复制字符串

说明

strdup()函数返回一个指向新字符串的指针,该字符串是字符串s的副本。新字符串的内存是通过malloc(3)获得的,可以通过free(3)释放。

strndup()函数类似,但最多复制n个字节。如果s大于n,则仅复制n个字节,并添加一个终止的空字节(aq \ 0aq)。

strdupa()和strndupa()相似,但是使用alloca(3)分配缓冲区。它们仅在使用GNU GCC套件时可用,并且遭受alloca(3)中所述的相同限制。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

错误说明

ENOMEM
没有足够的内存来分配重复的字符串。

另外参见

alloca(3),calloc(3),free(3),malloc(3),realloc(3),string(3),wcsdup(3)

STRDUP - Linux手册页

Linux程序员手册 第3部分
更新日期: 2019-03-06

返回值

成功后,strdup()函数将返回指向重复字符串的指针。如果没有足够的可用内存,它将返回NULL,并设置errno来指示错误原因。

日期:2019-08-20 18:01:24 来源:oir作者:oir