はじめに
この実験(Lab)では、与えられた文字列を反転させる C プログラムの書き方を学びます。プログラムはユーザーからの入力を受け取り、文字列を反転させ、その結果をコンソールに出力します。この概念は、文字列が回文(palindrome)であるかどうかをチェックするために使用できます。なぜなら、回文文字列は反転させても同じ値を持つからです。
注意:コーディングを練習し、gcc を使用してコンパイルして実行する方法を学ぶために、自分でファイル
~/project/main.cを作成する必要があります。
cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main
変数の宣言とユーザーからの入力の読み込み
#include <stdio.h>
#include <string.h>
int main() {
char str[1000], rev[1000];
int i, j, count = 0;
printf("Enter a string: ");
scanf("%s", str);
このステップでは、2 つの char 配列 str と rev、および 3 つの整数変数 i, j, count を宣言します。 str はユーザーが入力した元の文字列を格納するために使用され、rev は反転された文字列を格納するために使用されます。 count は文字列の長さを追跡するために使用されます。次に、printf を使用してユーザーに文字列の入力を促し、scanf を使用してそれを読み込みます。
文字列の長さを計算する
while (str[count] != '\0') {
count++;
}
j = count - 1;
このステップでは、while ループを使用して、ヌル文字 \0 に到達するまで元の文字列を走査します。各反復処理で、count 変数をインクリメントして、文字列内の文字数をカウントします。次に、count - 1 の値を j に代入します。これは、配列がインデックス 0 から始まり、j を元の文字列の最後の文字のインデックスにしたいからです。
文字列を反転させる
for (i = 0; i < count; i++) {
rev[i] = str[j];
j--;
}
printf("Reversed string: %s\n", rev);
このステップでは、for ループを使用して元の文字列を反復処理します。各反復処理で、元の文字列のインデックス j の文字を、反転された文字列の対応するインデックス i に代入します。次に、j をデクリメントし、文字列全体を反転するまでこのプロセスを繰り返します。最後に、printf を使用して、反転された文字列をコンソールに出力します。
完全なコード
#include <stdio.h>
#include <string.h>
int main() {
char str[1000], rev[1000];
int i, j, count = 0;
printf("文字列を入力してください:");
scanf("%s", str);
while (str[count] != '\0') {
count++;
}
j = count - 1;
for (i = 0; i < count; i++) {
rev[i] = str[j];
j--;
}
printf("反転された文字列:%s\n", rev);
return 0;
}
まとめ
この実験(Lab)では、与えられた文字列を反転させる C プログラムの書き方を学びました。while ループを使用して文字列の長さを計算する方法、および for ループとインデックス変数を使用して文字列を反転させる方法を学びました。文字列を操作するプログラムを書くことは、C プログラミングにおける重要なスキルであり、それを習得することで、多くの有用なタスクを達成できます。



