Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all bug

名前

       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/ に書かれている。