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

次に、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()関数を使うと、コピー先の文字列はコピー元の文字列で完全に上書きされます。既存の内容は失われるため、必要に応じてあらかじめ退避しておきましょう。
-
【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文字を格納できる文字列が宣言できます。文字列の
-
C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説
C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1