名 前
stpcpy − 文 字 列 を コ ピ ー し 、 コ ピ ー し た 文 字 列 の 終 り へ の ポ イ ン タ ー を 返 す
書 式
#include <string.h>
char *stpcpy(char *dest, const char *src);
glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):
stpcpy():
glibc 2.10 以 降 :
_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
glibc 2.10 よ り 前 :
_GNU_SOURCE
説 明
stpcpy() 関 数 は 、 src で 指 さ れ た 文 字 列 を (文 字 列 を 終 端 す る ヌ ル バ イ ト ('\0') を 含 め て ) dest で 指 さ れ た 配 列 に コ ピ ー す る 。 文 字 列 は 重 複 し て は な ら ず 、 コ ピ ー 先 の 文 字 列 dest は コ ピ ー を 受 け 取 る の に 十 分 大 き く な く て は な ら な い 。
返 り 値
stpcpy() は 、 文 字 列 dest の 始 ま り で は な く 終 り を 指 す ポ イ ン タ ー (す な わ ち 、 文 字 列 を 終 端 す る ヌ ル バ イ ト ) を 返 す 。
属 性
マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 )
stpcpy() 関 数 は ス レ ッ ド セ ー フ で あ る 。
準 拠
こ の 関 数 は POSIX.1−2008 に 追 加 さ れ た 。 そ れ 以 前 は 、 こ の 関 数 は C や POSIX.1 標 準 の 一 部 で も UNIX シ ス テ ム の 慣 習 的 な も の で も な か っ た 。 こ の 関 数 は Lattice C AmigaDOS コ ン パ イ ラ で 初 め て 登 場 し 、 そ れ は 少 な く と も 1986 年 時 点 で は そ う で あ っ た 。 そ の 後 、 1989 年 に GNU fileutils と GNU textutils に 登 場 し 、 1992 年 ま で に は GNU C ラ イ ブ ラ リ に も 存 在 し て い た 。 こ の 関 数 は BSD 系 に も 存 在 す る 。
バ グ
こ の 関 数 は バ ッ フ ァ ー dest の 範 囲 を 行 き 過 ぎ て し ま う 可 能 性 が あ る 。
例
例 と し て 、 こ の プ ロ グ ラ ム は foo と bar を 連 結 し て foobar を 作 る た め に stpcpy() を 使 用 し 、 そ の 後 表 示 す る 。
#define
_GNU_SOURCE
#include <string.h>
#include <stdio.h>
int
main(void)
{
char buffer[20];
char *to = buffer;
to = stpcpy(to,
"foo");
to = stpcpy(to, "bar");
printf("%s\n", buffer); }
関 連 項 目
bcopy(3), memccpy(3), memcpy(3), memmove(3), stpncpy(3), strcpy(3), string(3), wcpcpy(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。