はじめに
C 言語のプログラミングでは、2 つの文字列のベースアドレスをchar型のポインタ変数に指定し、ポインタを最初の文字列の末尾までインクリメントしてから、2 番目の文字列の文字を最初の文字列の末尾にコピーすることで、ポインタを使って 2 つの文字列を連結することができます。
この実験では、C 言語でポインタを使って 2 つの文字列を連結する方法を学びます。
新しいファイルを作成する
まず、テキストエディタを開き、~/project/ ディレクトリに main.c という名前の新しいファイルを作成します。
ヘッダーファイルをインクルードする
このステップでは、プログラムに必要なヘッダファイル stdio.h と stdlib.h をインクルードします。
#include <stdio.h>
#include <stdlib.h>
main() 関数を定義する
main() 関数は、C プログラムの本体を定義するために使用されます。
int main(){
// TODO: Write code here
return 0;
}
変数を宣言する
このステップでは、それぞれ 100 バイトのサイズを持つ 2 つの文字配列 aa と bb を宣言します。
char aa[100], bb[100];
文字列の入力
このステップでは、ユーザーが 2 つの文字列 aa と bb の値を入力し、gets() 関数を使用してそれらを格納します。
printf("Enter the first string: ");
gets(aa);
printf("Enter the second string to be concatenated: ");
gets(bb);
文字列の連結
このステップでは、2 つの文字ポインタ a と b を定義し、最初の文字列 aa に 2 番目の文字列 bb を連結し始めます。
char *a = aa;
char *b = bb;
while(*a){
a++;
}
while(*b){
*a = *b;
b++;
a++;
}
*a = '\0';
*aは、最初の文字列aaの終端を指さない限り、次のメモリ位置を指します。これはwhile(*a)という式を使って行われます。- ここでは、
aは最初の文字列aaの終端に達するまで次のメモリ位置にインクリメントされます。 *bは、2 番目の文字列bbの終端を指さない限り、次のメモリ位置を指します。これはwhile(*b)という式を使って行われます。- 各メモリ位置について、
aにはbが指す値が代入され、その後aとbの両方がインクリメントされます。これは*a = *b; b++; a++;という式を使って行われます。 '\0'は文字列の終端を表します。
連結した文字列を表示する
このステップでは、連結処理が完了した後に連結された文字列を表示します。
printf("\nThe string after concatenation is: %s ", aa);
コンパイルと実行
このステップでは、以下のコマンドを使用して main.c ファイルをコンパイルして実行します。
gcc main.c -o output
./output
完全なコード
以下は、ポインタを使用して文字列を連結するプログラムの完全なコードです。
#include <stdio.h>
#include <stdlib.h>
int main(){
char aa[100], bb[100];
printf("Enter the first string: ");
gets(aa);
printf("Enter the second string to be concatenated: ");
gets(bb);
char *a = aa;
char *b = bb;
while(*a){
a++;
}
while(*b){
*a = *b;
b++;
a++;
}
*a = '\0';
printf("\nThe string after concatenation is: %s ", aa);
return 0;
}
まとめ
この実験では、C プログラミング言語でポインタを使用して 2 つの文字列を連結する方法を学びました。これは、2 つの文字列のベースアドレスを文字ポインタ変数に指定し、ポインタを最初の文字列の末尾までインクリメントしてから、2 番目の文字列の文字を最初の文字列の末尾にコピーすることで行いました。コードの機能を確認するために、コンパイルして実行することを忘れないでください。



