C言語 入門|文字列の連結(結合)方法について解説

C言語
スポンサーリンク

「別々の文字列を連結させたい」

「strcatなどの関数を使わずに実現したい」

そんな疑問を持つ方に向けて、

プログラムの例を出しながら、わかりやすく解説していきます。

スポンサーリンク

文字列の連結(結合)方法

文字列の連結方法は主に2種類あります。

1つ目:  自力でくっつける。

2つ目: 「sprintf」や「strcat」などの関数を使用する。

1つ目から順に説明していきます。

自力でくっつける。

こちらは言葉の通り、ただ単純にくっつけていきます。

下のプログラムを参考にしながら解説していきます。

#include <stdio.h>
int k(const char t[])
{
  int len=0;

  while(t[len]!='\0')
    len++;
  
    return len;
}

int main(void){

  char str[3][256]={"Hello","World"};
  int a,b,c;

  printf("1つめの文字列は\"%s\"です\n",str[0]);
  printf("2つめの文字列は\"%s\"です\n",str[1]);

  b=k(str[0]);
  c=k(str[1]);
  for(a=0;a<b;a++){
  str[2][a]=str[0][a];
  }
  for(a=0;a<c;a++){
  str[2][b+a]=str[1][a];
  }

  printf("連結された文字列は %s です。\n",str[2]);

  return 0;
}

最初に、文字列の二次元配列「str」を用意します。

ポイント

strの長さが256あるのは、文字列を連結させる際にはみ出ないようにするためです。

長さを6にしてしまうと、連結したときに長さが11なのでエラーが起こります。

「str[0]」と「str[1]」にそれぞれ連結させたい文字を入れています。

次に、「str[0]」と「str[1]」の長さを自作の関数「k」にて

変数「b」と「c」にそれぞれの長さを入れます。

長さがわかったら「str[2]」に「str[0]」の文字を

繰り返し処理「for」文を使って入れていきます。

続いて「str[0]」の文字を入れ終わった「str[2]」に同様にして

「str[1]」の文字も入れていきます。

注意点

「str[1]」の文字を入れるときには、str[0]の長さの分(b)だけstr[2]には足します。

str[2][b+a]=str[1][a];

「sprintf」関数

以下のプログラムで説明していきます。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	char str[32];

	int data1 = 2021;
	char data2 = 'C';
	char  data3[] ="学習します";

	//	str配列に文字列を生成
	sprintf(str, "%d年に%cを%s", data1, data2, data3);

	printf("%s", str);

	return 0;
}

配列strに文字列を連結させたいとします。

「sprintf」関数は、

sprintfの基本形

で書きます。

プログラム内では応用として、

3つの文字列と数列とそのまま文字を付け足して連結させています。

ポイント
#define _CRT_SECURE_NO_WARNINGS

「sprintf」関数は、安全ではないため使用は推奨されていません。

そのため注意書きが表示されるのですが、

コードをstdio.hよりも前に書くことで使用することができます。

「strcat」関数

以下のプログラムを使用して解説します。

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

int main(void){
char s1[]=“Hello”;
char s2[]=“World”; 
strcat(s1,s2); 
printf(“%sと表示させます¥n”,s1);
return 0; 
}

「strcat」関数は初めに<string.h>を読み込む必要があります。

そして使うときには、

strcatの基本形

と書きます。

文字列Aの後ろに文字列Bが連結する関数になります。

そのため、文字列Aを連結後に使うときには

文字列Bがくっついていることに注意しましょう。

スポンサーリンク

まとめ

今回は配列の連結(結合)方法について解説しました。

strcat関数を使えば簡単に連結させることができます。

次回は、ポインタについて解説します。

ポインタについて知りたい方はこちら!

C言語
スポンサーリンク
カンキリをフォローする
kankiriblog