C/C++で文字列を反転する方法をサンプルコード付きで解説
C言語で文字列を反転(逆順に並べ替え)する方法を、実際のコード例とともにわかりやすく解説します。
サンプルコード
#include<stdio.h>
#include<string.h>
int main() {
char s[50], t;
int i = 0, j = 0;
printf("\nEnter the string to reverse :");
gets(s);
j = strlen(s) - 1;
while (i < j) {
t = s[i];
s[i] = s[j];
s[j] = t;
i++;
j--;
}
printf("\nReverse string is : %s", s);
return (0);
}実行結果
Enter the string to reverse: Here is the input string. Reverse string is : .gnirts tupni eht si ereH
プログラムの解説
上記のプログラムでは、文字列を反転する処理の本体が main() 関数内に記述されています。まず、ユーザーが入力した文字列を格納するために、char型の配列 char s[50] を宣言しています。
次に、標準ライブラリ関数 strlen() を使って文字列の長さを求め、末尾の文字のインデックスを変数 j に設定します。
j = strlen(s) - 1;
その後、先頭側の位置 i と末尾側の位置 j の文字を一つずつ入れ替えていきます。変数 i はインクリメント(先頭方向から後ろへ)、変数 j はデクリメント(末尾方向から前へ)されるため、i と j が交差するまで文字の入れ替えを繰り返すことで、文字列全体が反転されます。
while (i < j) {
t = s[i];
s[i] = s[j];
s[j] = t;
i++;
j--;
}補足:gets() の使用についての注意
なお、上記のコードで使用している gets() 関数は、入力サイズを制限できずバッファオーバーフローを引き起こす危険があるため、C11規格以降では廃止されています。実用的なプログラムでは、代わりに fgets() を使用することを強く推奨します。
#include<stdio.h>
#include<string.h>
int main() {
char s[50], t;
int i = 0, j = 0;
printf("\nEnter the string to reverse :");
if (fgets(s, sizeof(s), stdin) != NULL) {
s[strcspn(s, "\n")] = '\0'; /* 末尾の改行を除去 */
j = strlen(s) - 1;
while (i < j) {
t = s[i];
s[i] = s[j];
s[j] = t;
i++;
j--;
}
printf("\nReverse string is : %s\n", s);
}
return 0;
}このように fgets() を使えば、バッファサイズを超える入力を受け付けないため、安全に文字列を読み込むことができます。文字列の反転ロジック自体はどちらのコードでも同じです。
-
クライアントサーバーモデルを用いたC/C++による文字列反転の実装方法
本記事では、クライアントとサーバーで構成されるシステムを作成する方法を解説します。クライアントが文字列をサーバーへ送信すると、サーバーがその文字列を反転(リバース)し、結果をクライアントに返却するという仕組みです。ソケットプログラミングの基本このシステムではソケットプログラミングの概念を利用します。クライアントとサーバー間の接続を確立するためには、ポートを作成する必要があります。ポート番号はソケットが使用できる任意の数値であり、接続を確立するにはクライアントとサーバーの両方で同じポート番号を使用しなければなりません。今回は例としてポート番号 4000 を使用します。コンパイルと実行の手順プログ
-
C#で文字列を反転する方法(Array.Reverseの使い方)
C#で文字列を反転する方法 C#で文字列を逆順に並べ替えたい場合は、Array.Reverse()メソッドを使うのが最も簡単です。文字列はそのままでは直接反転できないため、一度文字配列(char配列)に変換してから反転処理を行います。 文字列を反転するサンプルコード 以下は、文字列を反転して返すカスタムメソッドの例です。ここでは、引数として渡された文字列「Henry」を反転させています。 public static string ReverseFunc(string str) { char[] ch = str.ToCharArray(); Array.Reverse(ch)