Scroll to navigation

STRDUP(3) Linux Programmer's Manual STRDUP(3)

名前

strdup, strndup, strdupa, strndupa - 文字列を複製する

書式

#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
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
|| /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

strndup():

_POSIX_C_SOURCE >= 200809L
_GNU_SOURCE

strdupa(), strndupa(): _GNU_SOURCE

説明

strdup() 関数は、文字列 sの複製である 新しい文字列へのポインターを返す。 新しい文字列のためのメモリーは malloc(3) で得ている。 そして、 free(3) で解放することができる。

strndup() 関数は同様であるが、最大で n バイトを複製する。 sn よりも長い場合、n バイトだけが複製され、 終端のヌルバイト ('\0')) が追加される。

strdupa() と strndupa() も同様だが、バッファーの確保に alloca(3) を使用する点が異なる。 これらが使用できるのは GNU GCC ツール群を使う場合だけであり、 alloca(3) で説明されているのと同じ制限がある。

返り値

成功すると、 strdup() 関数は複製された文字列へのポインターを返す。 十分なメモリーが確保できなかった場合には、 NULL を返し、 errno にエラーの原因を示す値を設定する。

エラー

複製された文字列を割り当てる十分なメモリーが確保できなかった。

属性

この節で使用されている用語の説明については、 attributes(7) を参照。

インターフェース 属性
strdup(), strndup(), strdupa(), strndupa() Thread safety MT-Safe

準拠

strdup() は SVr4, 4.3BSD, POSIX.1-2001 準拠である。 strndup() は POSIX.1-2008 準拠である。 strdupa(), strndupa() は GNU 拡張である。

関連項目

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

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

2019-03-06 GNU