Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説


C言語のライブラリ関数 char *strcpy(char *dest, const char *src) は、src が指し示す文字列を dest にコピーするための関数です。

C言語では、文字の配列のことを「文字列」と呼びます。

文字列の宣言

文字列(文字配列)の宣言は、以下の形式で行います。

char stringname[size];

例えば char string[50]; と宣言すると、最大50文字の文字列を格納できる配列が確保されます。

文字列の初期化

文字列の初期化には、主に以下の2つの方法があります。

1. 文字定数を使う方法

char string[10] = {'H', 'e', 'l', 'l', 'o', '\0'};

2. 文字列定数を使う方法

char string[10] = "Hello";

文字列へのアクセス:printfやscanfでは、制御文字列 "%s" を使用します。この指定により、終端文字 '\0' に到達するまで文字列が読み書きされます。

strcpy()関数とは

  • コピー元(ソース)の文字列を、コピー先(デスティネーション)の文字列に複製するために使用します。
  • コピー先の文字配列のサイズは、コピー元の文字列の長さ以上である必要があります。サイズが不足するとバッファオーバーフローが発生する恐れがあるため注意が必要です。

構文

strcpy()関数の構文は以下の通りです。

strcpy(コピー先の文字列, コピー元の文字列);

第1引数にコピー先、第2引数にコピー元を指定します。この順序を間違えないようにしましょう。

使用例

以下の例は、strcpy()関数の正しい使い方と誤った使い方の対比です。

char a[50];
strcpy("Hello", a);  // エラー:文字列リテラルはコピー先にできない
strcpy(a, "Hello");  // 正しい:a に "Hello" がコピーされる

第1引数には必ず書き込み可能な文字配列を指定する必要があります。文字列リテラルをコピー先に指定すると、コンパイルエラーまたは実行時エラーとなります。

サンプルプログラム1

以下のプログラムは、strcpy()関数を使って文字列をコピーする基本的な例です。

#include <string.h>
main() {
    char a[50], b[50];
    printf("コピー元の文字列を入力してください");
    scanf("%s", a);
    strcpy(b, a);
    printf("コピーされた文字列 = %s", b);
    getch();
}

実行結果

上記のプログラムを実行すると、以下のような結果が出力されます。

コピー元の文字列を入力してください : Hello
コピーされた文字列 = Hello

C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説

次に、strcpy()のもう一つの使用例を見てみましょう。以下は、strcpyライブラリ関数の動作を示すCプログラムです。

サンプルプログラム2

#include<stdio.h>
#include<string.h>
void main() {
    // コピー元とコピー先の文字列を宣言 //
    char source[25], destination[50];
    // ユーザーからの入力を読み込む //
    printf("コピーする文字列を入力してください : ");
    gets(source);
    printf("既存のコピー先の文字列を入力してください : ");
    gets(destination);
    // strcpyライブラリ関数を使用 //
    strcpy(destination, source);
    // コピー先の文字列を表示 //
    printf("コピー先の文字列は : ");
    puts(destination);
}

実行結果

上記のプログラムを実行すると、以下のような結果が出力されます。

コピーする文字列を入力してください : C programming
既存のコピー先の文字列を入力してください : bhanu
コピー先の文字列は : C programming

このように、strcpy()関数を使うと、コピー先の文字列はコピー元の文字列で完全に上書きされます。既存の内容は失われるため、必要に応じてあらかじめ退避しておきましょう。

  1. 【C言語】strncpy()関数とは?基本から実践的な使い方まで解説

    strncpy()関数とはC言語の標準ライブラリ関数 char *strncpy(char *dest, const char *src, size_t n) は、srcが指す文字列からdestへ最大n文字をコピーする関数です。もしsrcの長さがnより短い場合は、コピー後のdestの残りの領域がヌルバイト(\0)で埋められます。なお、C言語において文字の配列は「文字列」と呼ばれます。文字列の宣言文字列(文字型配列)の宣言は以下のように行います。char stringname[サイズ];たとえば、char string[50];と記述すれば、最大50文字を格納できる文字列が宣言できます。文字列の

  2. C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説

    C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1