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

C言語のstrcat関数とは?文字列連結の基本と使い方を解説

C言語の標準ライブラリ関数 char *strcat(char *dest, const char *src) は、src が指す文字列を、dest が指す文字列の末尾へ連結(追記)します。
C言語では、文字型(char型)の配列を「文字列」として扱い、文字列の末尾には終端を表すヌル文字「\0」が必要です。

文字列の宣言

文字列(文字型配列)の宣言は、次のように行います。

char stringname[size];

たとえば char string[50]; と宣言すれば、最大50文字の文字列を格納できます。

文字列の初期化

方法1:文字定数を使う

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

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

char string[10] = "Hello";

文字列へのアクセス:制御文字列(書式指定子)"%s" を使うことで、ヌル文字「\0」に到達するまでの文字列全体を読み書きできます。

strcat() 関数のポイント

  • 2つの文字列を結合(連結)するために使用します。
  • 連結先の文字列には、連結元の文字列をすべて収められるだけの十分な長さが必要です。
  • 連結された結果は、連結先の文字列に格納されます。

構文

strcat(連結先の文字列, 連結元の文字列);

サンプルプログラム

次のプログラムは、strcat() 関数の基本的な使い方を示したものです。

#include <string.h>

main(){
    char a[50] = "Hello \n";
    char b[20] = "Good Morning \n";
    strcat(a, b);
    printf("concatenated string = %s", a);
}

実行結果

concatenated string = Hello Good Morning

ユーザー入力を連結する例

続いて、キーボードから入力した2つの文字列を strcat() で連結するプログラムを見てみましょう。

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

void main(){
    // 連結元と連結先の文字列を宣言 //
    char source[45], destination[50];
    // ユーザーから文字列を入力してもらう //
    printf("Enter the source string : \n");
    gets(source);
    printf("Enter the destination string : \n");
    gets(destination);
    // 入力された2つの文字列を連結する //
    strcat(source, destination);
    // 連結結果を表示する //
    printf("The modified destination string : ");
    puts(source);
}

実行結果

Enter the source string : Tutorials Point
Enter the destination string : C programming
The modified destination string : Tutorials Point C programming

使用時の注意点

  • 連結後の文字列全体(終端の「\0」を含む)が連結先のバッファに収まるよう、十分なサイズを確保してください。サイズが不足するとバッファオーバーフローが発生し、予期しない動作やセキュリティ上の問題につながる可能性があります。
  • サンプルで使用している gets() 関数は、入力サイズを制限できないため危険で、現在では非推奨です。実際の開発では fgets() など安全な関数を使いましょう。
  • より安全に連結したい場合は、コピーするサイズを指定できる strncat() の利用も検討するとよいでしょう。
  1. C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説

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

  2. 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,