strcat、strncat、strxfrm、strxfrm_l、strcpy、strncpy、stpcpy、stpncpy、strdup、または strndup サブルーチン

目的

メモリー内のストリングをコピーして追加します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <string.h>

文字 * ストレット ( String1,  String2) 文字 *文字列 1 CONST CHAR *文字列 2;

文字 * strncat (String1 String2 数値) char *String1; const char *String2; size_t 数値;

サイズ _T  Strxfrm (String1, String2, 数値) 文字 *文字列 1;  CONST CHAR *文字列 2; サイズ _T 数値;

size_t strxfrm_l (String1 String2Numberロケール) char *String1; const char *String2; size_t 数値; locale_t ロケール;

文字 * strcpy (String1 String2) char *String1; const char *String2;

文字 * strncpy (String1 String2 数値) char *String1; const char *String2; size_t 数値;

char * stpcpy (String1String2) char *String1; const char *ストリング 2;

char * stpncpy (String1 String2size) char *String1; const char *String2; size_t size;

文字 * strdup (String1) const char *ストリング 1;

char * strndup (String1 size) const char *String1; size_t サイズ;

説明

strcatstrncatstrxfrmstrcpystrxfrm_lstrncpystpcpystpncpystrdup、および strndup サブルーチンは、メモリー内のストリングをコピーして追加します。

String1 および String2 パラメーターはストリングを指します。 ストリングは、ヌル文字で終了する文字の配列です。 strcatstrncat strcpy、 および strncpy サブルーチンはすべて、 String1 パラメーターのストリングを変更します。 ただし、 String1 パラメーターが指す配列のオーバーフローについては検査しません。 ストリング移動は、文字単位で実行され、左から開始されます。 左方向への移動は予期したとおりに重なり合っていますが、右側への移動が重なり合っていると、予期しない結果が生じる可能性があります。 これらのサブルーチンはすべて、 string.h ファイルで宣言されます。

strcat サブルーチンは、 String2 パラメーターによって指示されるストリングのコピーを、 String1 パラメーターによって指示されるストリングの末尾に追加します。 strcat サブルーチンは、NULL 終了結果へのポインターを戻します。

ストンキャット サブルーチンは、 数値 パラメーターで指定されたバイト数を、 String2 パラメーターから String1 パラメーターで指定されたストリングの末尾にコピーします。 サブルーチンは、 String2 パラメーターのストリングでヌル文字を検出すると、 Number パラメーターで指定されたバイト数の終わりの前でコピーを停止します。 strncat サブルーチンは、NULL 終了結果へのポインターを戻します。 strncat サブルーチンは、 String1 パラメーターの値を戻します。

strxfrm サブルーチンは、 String2 パラメーターが指すストリングを変換し、それを String1 パラメーターが指す配列に入れます。 strxfrm サブルーチンは、可能な場合はストリング全体を変換しますが、 String1 パラメーターが指す配列内の Number パラメーターで指定されたバイト数を超えないようにします。 したがって、 Number パラメーターの値が 0 の場合は、 String1 パラメーターを NULL ポインターにすることができます。 strxfrm サブルーチンは、終了ヌル・バイトを含めずに、変換されたストリングの長さを戻します。 戻り値が Number パラメーターの値以上の場合、 String1 パラメーターが指す配列の内容は不確定なものになります。 Number パラメーターによって指定されたバイト数が 0 の場合、 strxfrm サブルーチンは、終了ヌル・バイトを含めずに、変換されたストリングを保管するために必要な長さを戻します。 strxfrm サブルーチンは、 LC_COLLATE カテゴリーによって決定されます。

strxfrm_l () 関数は strxfrm () 関数と同等ですが、使用されるロケール・データが Localeによって表されるロケールからのものである点が異なります。

Strcpy および 標準 CPY サブルーチンは、 String2 パラメーターによって指し示されるストリングを、 String1 パラメーターによって指し示される文字配列にコピーします。 ヌル文字がコピーされると、コピーは停止します。 strcpy サブルーチンは、正常に実行された場合、 String1 パラメーターの値を戻します。 それ以外の場合は、NULL ポインターが戻されます。

stpcpy サブルーチンは、正常に実行された場合、 String1 パラメーターにコピーされた終了 NULL 文字へのポインターを戻します。 それ以外の場合は、NULL ポインターが戻されます。

ストンピー および 標準 cpy サブルーチンは、 数値 パラメーターで指定されたバイト数を、 String2 パラメーターで指定されたストリングから、 String1 パラメーターで指定された文字配列にコピーします。 String2 パラメーター値が指定された文字数より小さい場合、 strncpy サブルーチンは、 String1 パラメーターの末尾にヌル文字を埋め込んで、 Number パラメーターの値と等しいバイト数にします。 String2 パラメーターが指定された文字数以上の場合、 Number パラメーターで指定された文字数だけがコピーされ、結果はヌル・バイトで終了しません。 strncpy サブルーチンは、 String1 パラメーターの値を戻します。

宛先にヌル文字が書き込まれると、 stpncpy 関数は最初のヌル文字のアドレスを戻します。 それ以外の場合は、 & String1[Number]を返します。

strdup サブルーチンは、新しいストリングへのポインターを戻します。これは、 String1 パラメーターが指すストリングと重複しています。 新規ストリングのスペースは、 malloc サブルーチンを使用して取得されます。 新規ストリングを作成できない場合は、NULL ポインターが戻されます。

strndup サブルーチンは、 strdup サブルーチンと同等ですが、最大 size に 1 バイトを加えたものを新しく割り当てられたメモリーにコピーし、新しいストリングをヌル文字で終了させる点が異なります。 String1 の長さが sizeより大きい場合は、 size バイトのみが重複しています。 sizeString1の長さより大きい場合は、 String1 内のすべてのバイトが新しいメモリー・バッファーにコピーされます。 終了 NULL 文字の組み込み

パラメーター

項目 説明
Number コピーまたは変換するストリングのバイト数を指定します。
String1 指定されたデータがコピーまたは追加されるストリングを指します。
String2 コピー、追加、または変換されるデータを含むストリングを指します。
locale ストリングを変換する必要があるロケールを指定します。

エラー・コード

strcatstrncatstrxfrmstrxfrm_lstrcpystrncpystpcpystpncpystrdup、および strndup サブルーチンは、以下の場合に失敗します。

項目 説明
EFAULT ストリング・パラメーターが無効なアドレスです。

さらに、以下の場合には、 strxfrmおよび strxfrm_l サブルーチンは失敗します。

項目 説明
EINVAL ストリング・パラメーターに、照合シーケンスのドメイン外の文字が含まれています。

strdup および strndup 関数は、以下の場合に失敗します。

項目 説明
「ENOMEM」 使用可能なストレージ・スペースが不足しています。