文字列を逆順にするプログラム

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、与えられた文字列を逆順にする C プログラムを書く方法を学びます。このプログラムはユーザーから入力を受け取り、文字列を逆順にしてコンソールに結果を出力します。この概念は、文字列が回文かどうかを確認するために使用できます。なぜなら、回文文字列は逆順にしても同じ値を持つからです。

注: コーディングを練習し、gcc を使用してコンパイルおよび実行する方法を学ぶには、自分で ~/project/main.c ファイルを作成する必要があります。

cd ~/project
## main.c を作成する
touch main.c
## main.c をコンパイルする
gcc main.c -o main
## main を実行する
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/ControlFlowGroup -.-> c/while_loop("While Loop") c/CompoundTypesGroup -.-> c/strings("Strings") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123323{{"文字列を逆順にするプログラム"}} c/for_loop -.-> lab-123323{{"文字列を逆順にするプログラム"}} c/while_loop -.-> lab-123323{{"文字列を逆順にするプログラム"}} c/strings -.-> lab-123323{{"文字列を逆順にするプログラム"}} c/user_input -.-> lab-123323{{"文字列を逆順にするプログラム"}} c/output -.-> lab-123323{{"文字列を逆順にするプログラム"}} end

変数を宣言してユーザーから入力を読み取る

#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つの文字配列 strrev と、3つの整数型変数 ijcount を宣言します。str はユーザーが入力した元の文字列を格納するために使用され、rev は逆順にした文字列を格納するために使用されます。count は文字列の長さを追跡するために使用されます。その後、printf を使用してユーザーに文字列を入力するよう促し、scanf を使用してそれを読み取ります。

文字列の長さを計算する

while (str[count]!= '\0') {
   count++;
}
j = count - 1;

このステップでは、while ループを使用して、null文字 \0 に達するまで元の文字列をトレーバースします。各反復では、文字列の文字数をカウントするために count 変数をインクリメントします。その後、配列はインデックス0から始まるため、jcount - 1 の値を代入します。そして、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("Enter a string: ");
   scanf("%s", str);

   while (str[count]!= '\0') {
      count++;
   }
   j = count - 1;

   for (i = 0; i < count; i++) {
      rev[i] = str[j];
      j--;
   }
   printf("Reversed string: %s\n", rev);

   return 0;
}

まとめ

この実験では、与えられた文字列を逆順にするCプログラムを書く方法を学びました。whileループを使って文字列の長さを計算する方法と、forループとインデックス変数を使って文字列を逆順にする方法を学びました。文字列を操作するプログラムを書くことは、C言語プログラミングにおいて重要なスキルであり、これをマスターすることで、多くの有用なタスクを達成することができます。