STRCPY(3)

名称
strcpy, strncpy - 文字列のコピー

ライブラリ
libc

書式
#include <string.h> char * strcpy(char *dst, const char *src) char * strncpy(char *dst, const char *src, size_t len)

解説
strcpy() 関数は、文字列 src を dst にコピーします (終端の ‘\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() 関数は、 isoC に適合しています。