C における文字列の反転は、最後の文字が最初の文字になり、最後から 2 番目の文字が 2 番目の文字になるように文字列内の文字を並べ替える基本的な操作です。
例えば、
Original String: 'string' Reversed String: 'gnirts'>
この記事では、C で文字列を反転するさまざまな方法をコード例とともに説明します。
C で文字列を反転するさまざまな方法
C の文字列を反転するにはさまざまな方法があります。そのうちのいくつかを以下で説明します。
- ループを使用して文字列を反転する
- 再帰を使用して文字列を反転する
- C でポインターを使用して文字列を反転する
- ライブラリ関数を使用して文字列を反転する
1. ループを使用して文字列を反転する
この方法では、
- 文字列の先頭と末尾をそれぞれ指す 2 つの変数 i と j を持つ for ループを使用します。
- インデックス i と j の文字を置換し、それぞれ隣接する右と左に移動します。つまり、i をインクリメントし、j をデクリメントします。
- i が j 以上になるまでこれを続けます。
結果として反転された文字列が得られます。
実装
C
// C program to reverse the string in C using loops> #include> #include> int> main()> {> > // string to be reversed.> > char> str[100] => 'string'> ;> > printf> (> 'Original String: %s
'> , str);> > // string length> > int> len => strlen> (str);> > // for loop> > for> (> int> i = 0, j = len - 1; i <= j; i++, j--) {> > // swapping characters> > char> c = str[i];> > str[i] = str[j];> > str[j] = c;> > }> > printf> (> 'Reversed String: %s'> , str);> > return> 0;> }> |
>
>出力
cpp が等しい
Original String: string Reversed String: gnirts>
2. 再帰を使用して文字列を反転する
この方法では、再帰を使用して文字を入れ替えます。
実装
C
// C program to reverse string using recursion> #include> #include> // recursive function to reverse string> void> reverse(> char> * str,> int> len,> int> i,> int> temp)> {> > // if current index is less than the remaining length of> > // string> > if> (i temp = str[i]; str[i] = str[len - 1]; str[len - 1] = temp; i++; len--; reverse(str, len, i, temp); } } // driver code int main() { char str[100] = 'string'; printf('Original String: %s
', str); int len = strlen(str); reverse(str, len, 0, 0); printf('Reversed String: %s', str); return 0; }> |
>
>
バーティ・ジャ出力
Original String: string Reversed String: gnirts>
3. C でポインターを使用して文字列を反転する
ここでは 2 つのポインターを使用します。1 つは開始ポインター、もう 1 つは終了ポインターです。そして、これから達成する文字を交換することで、最初の方法で行ったのと同様に文字を反転します。
実装
C
// C program to reverse a string using pointers> #include> #include> // function to reverse the string> void> stringReverse(> char> * str)> {> > int> len => strlen> (str);> > // pointers to start and end> > char> * start = str;> > char> * end = str + len - 1;> > while> (start char temp = *start; *start = *end; *end = temp; start++; end--; } } // driver code int main() { char str[] = 'string'; printf('Original String: %s
', str); // calling function stringReverse(str); printf('Reversed String: %s', str); return 0; }> |
>
>出力
Original String: string Reversed String: gnirts>
4. ライブラリ関数を使用して文字列を反転する
C では、文字列を反転するために使用できるライブラリ関数が内部で定義されています。 strrev() 関数は、文字列を反転する最も簡単な方法を提供します。
小さじサイズ
構文
char* strrev(char* str);>
ここで、 str は反転する文字列です。
注記: strrev() 関数は標準 C 言語の一部ではないため、すべてのコンパイラに存在するとは限りません。
実装
C
// C program to reverse a string using strrev()> #include> #include> int> main()> {> > char> str[] => 'string'> ;> > printf> (> 'Original String: %s
'> , str);> > // reversing string> > printf> (> 'Reversed String: %s'> , strrev(str));> > return> 0;> }> |
>
>
出力
Original String: string Reversed String: gnirts>