strcpy | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


strcpy関数

概要

文字列をコピーする。

ヘッダ

string.h

形式

char* strcpy(char* restrict s1, const char* restrict s2);

引数

s1

コピー先の配列。

s2

コピー元の文字列。

戻り値

s1 を返す。

詳細

s1 へ s2 の内容を終端文字を含めてコピーする。

注意

s1 が指す配列の大きさが、s2 の文字列の長さに満たないとバッファオーバーフローとなる。この結果は未定義である。

また、s1 と s2 の領域が部分的に重なり合っているとき、動作は未定義である。

C11 では、これらの危険を検出できる strcpy_s関数が追加されている。

使用例

#include <stdio.h>
#include <string.h>

int main(void)
{
    char s[20];

    puts(strcpy(s, "abcde"));
}

実行結果:

abcde

関連

strncpy関数は、コピーする文字数を指定できる。C11 ではバッファオーバーフローの危険性を回避できる strcpy_s関数を検討すべきである。

終端文字を無視してコピーを行うために、memcpy関数、あるいは memmove関数を使える。

ワイド文字列版の wcscpy関数がある。

解説章

第7章第32章(練習問題①)


参考リンク


更新履歴

’2018/4/22 解説中で C95 を(C89 に対して)特別扱いしないように修正。そもそもC言語編は C95ベースなので、余計な説明は省く。

’2018/4/17 全体的に文章を見直し修正。
未定義の動作になることについて明記。

’2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る