日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
STRCPY(3) FreeBSD ライブラリ関数マニュアル STRCPY(3)
名称
stpcpy, stpncpy, strcpy, strncpy -- 文字列をコピーする
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <string.h>
char *
stpcpy(char * restrict dst, const char * restrict src);
char *
stpncpy(char * restrict dst, const char * restrict src, size_t len);
char *
strcpy(char * restrict dst, const char * restrict src);
char *
strncpy(char * restrict dst, const char * restrict src, size_t len);
解説
strcpy() と stpcpy() 関数は、文字列 src を dst に (終端の `\0' 文字を含め
て) コピーします。
strncpy() と stpncpy() 関数は、src から dst に多くても len 文字コピーしま
す。src が len 文字未満であるなら、dst の残りは、`\0' 文字が詰められま
す。そうでなければ、dst は、終了されません。
strcpy(), strncpy(), stpcpy() と stpncpy() のすべてのために、結果は、src
と dst がオーバーラップするなら、未定義です。
戻り値
strcpy() と strncpy() 関数は、dst を返します。stpcpy() と stpncpy() 関数
は、dst の終端の `\0' 文字へのポインタを返します。stpncpy() がヌル文字で
dst を終了していないなら、代わりに、(必ずしも有効なメモリ位置を参照してい
ない) dst[n] へのポインタを返します
例
次は、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 をヌル文字で終了
しないことに注意してください。
次は、input から buf に適合するように同じ数だけ文字をコピーし、結果をヌル
文字で終了します。strncpy() が、文字列自体をヌル文字で終了することを保証
しないので、これは、明確に行わなければなりません。
char buf[1024];
(void)strncpy(buf, input, sizeof(buf) - 1);
buf[sizeof(buf) - 1] = '\0';
これは、次の例で示されるように、strlcpy(3) を使用して、より良く達成するこ
とができるかもしれません:
(void)strlcpy(buf, input, sizeof(buf));
関連項目
bcopy(3), memccpy(3), memcpy(3), memmove(3), strlcpy(3), wcscpy(3)
規格
strcpy() と strncpy() 関数は、ISO/IEC 9899:1990 (``ISO C90'') に適合して
います。stpcpy() と stpncpy() 関数は、IEEE Std 1003.1-2008 (``POSIX.1'')
に適合しています。
歴史
stpcpy() 関数は、FreeBSD 4.4 ではじめて登場し、stpncpy() は、FreeBSD 8.0
で追加されました。
セキュリティの考察
このマニュアルページで文書化された関数のすべては、悪意のあるユーザがバッ
ファオーバフロー攻撃を通して実行しているプログラムの機能を恣意的に変更す
ることを可能にする方法で容易に悪用されます。
strlcpy() 関数がほとんどすべての場合に使用されることを強く推奨されます。
いくつかのためですが、すべてではなく、固定長レコード、終了しない文字列
は、両方とも有効で、望ましいかもしれません。その特有な場合に、strncpy()
関数は、最も賢明であるかもしれません。
FreeBSD 13.2 June 6, 2018 FreeBSD 13.2