STRDUP

Section: Linux Programmer's Manual (3)
Updated: 2019-03-06
Index JM Home Page roff page
 

名前

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():

glibc 2.10 以降:
_POSIX_C_SOURCE >= 200809L
glibc 2.10 より前:
_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 にエラーの原因を示す値を設定する。  

エラー

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

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース属性
strdup(), strndup(), strdupa(),
strndupa()
Thread safetyMT-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/ に書かれている。


 

Index

名前
書式
説明
返り値
エラー
属性
準拠
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 03:33:34 GMT, December 05, 2022