C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス strcpy

🔧 文字列 ・ string.h ・ C89

strcpy の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

char *strcpy(char *dest, const char *src);

どんな関数か

文字列をコピー先バッファへコピーする。コピー先のサイズを一切考慮しないため、コピー元がコピー先より長いとバッファオーバーフローを起こす、標準ライブラリの中でも代表的な危険関数。 C11のAnnex Kやコンパイラ独自拡張の"安全な"strcpy系関数も合わせて知っておくと選択肢が広がる。

使用例

#include <stdio.h>
#include <string.h>
int main(void) {
    char dest[16];
    strcpy(dest, "hello");
    puts(dest);
    return 0;
}

つまずきやすい注意点

⚠️ コピー先のサイズチェックが無いため、実務ではstrncpyやsnprintf("%s")、C11 Annex Kのstrcpy_sなど長さを指定できる手段を使う。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

strcpy と一緒に使う関数

strncpy最大n文字までコピーするstrcpyの安全版だが、コピー元がn文字以上あると終端の\0が付かず、逆に短いと残りが\0で埋… strlen文字列の終端\0を除いた文字数(バイト数)を返す。文字列の長さ分だけ先頭から走査するためO(n)であり、ループの条件式な… strcatコピー先文字列の末尾に別の文字列を連結する。コピー先バッファの残り容量を確認しないため、strcpy同様にオーバーフロー…

この関数が出てくる解説

文字列リテラルと初期化文字列の初期化の書き方を使い分け、代入できない理由を説明できる string.h の主要関数strlen・strcpy・strcat・strcmp の役割と使い方を説明できる 安全な文字列操作——バッファサイズの意識バッファオーバーフローの危険を理解し、snprintfやfgetsで安全に書ける

同じ分類(文字列)の関数

memcmp memcpy memmove memset memset_explicit strcat strchr strcmp strcoll strcspn strdup strerror strlen strncat strncmp strncpy

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る