スポンサーリンク

STRCPY(3) FreeBSD ライブラリ関数マニュアル STRCPY(3)

名称

strcpy, strncpy − 文字列のコピー

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <string.h>

char *

strcpy(char *dst, const char *src);

char *

strncpy(char *dst, const char *src, size_t len);

解説

strcpy() 関数は、文字列 srcdst にコピーします (終端の ‘\0’ 文字を含め て)。

strncpy() 関数は、 len 個以上の文字は dst にコピーせず、 src の長さが len 文字以下の場合には ‘\0’ 文字を追加します。また、 src の長さが len 文字以 上である場合は、 dst を終了させません。

戻り値

strcpy() および strncpy() 関数は、 dst を返します。

次の行は、 chararray を ‘‘abc\0\0\0’’ に設定します :

      char chararray[6];

     (void)strncpy(chararray, "abc", sizeof(chararray));

次の行は、 chararray を ‘‘abcdef’’ に設定します :

      char chararray[6];

     (void)strncpy(chararray, "abcdefgh", sizeof(chararray));

パラメータの長さが、ソースの長さと同じかそれ以上であるため chararray は NUL で終了しないことに注意してください。

次の行は、 input から buf へ文字を適切にコピーし、その結果を NUL で終了さ せます。 strncpy() の文字列自体が NUL で終了することを保証しないためで、 これは明確にしなければなりません。

      char buf[1024];

     (void)strncpy(buf, input, sizeof(buf) - 1);
      buf[sizeof(buf) - 1] = ’\0’;

次の例のように strlcpy(3) を使用すると、より良く実行できるかもしれませ ん。

(void)strlcpy(buf, input, sizeof(buf));

strlcpy(3) は標準的には定義されていないので、移植に無関係なときだけ利用す るように注意してください。

関連項目

bcopy(3), memccpy(3), memcpy(3), memmove(3), strlcpy(3)

規格

strcpy() および strncpy() 関数は、 ISO/IEC 9899:1990 (‘‘ISO C89’’) に適合 しています。

FreeBSD 10.0 August 9, 2001 FreeBSD 10.0

スポンサーリンク