Manpages

名 前

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 の 範 囲 を 行 き 過 ぎ て し ま う 可 能 性 が あ る 。

例 と し て 、 こ の プ ロ グ ラ ム は foobar を 連 結 し て 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/ に 書 か れ て い る 。