Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語のstrrev関数とは?文字列を反転する方法を徹底解説

C言語において、文字型(char)の配列として表現されるデータを「文字列」と呼びます。

文字列の宣言

文字配列を宣言するための基本構文は以下のとおりです。

char stringname [size];

たとえば「char string[50];」と記述すると、最大50文字の長さを持つ文字列を格納できる配列が確保されます。

文字列の初期化

文字列を初期化する方法は、主に次の2通りがあります。

  • 1文字ずつ文字定数で初期化する方法
char string[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };
  • 文字列リテラル(文字列定数)を使う方法
char string[10] = "Hello";

アクセス:文字列の入力や表示には、制御文字列「%s」を使用します。「%s」は終端を示すNULL文字('\0')に出会うまで、文字列を読み書きします。

strrev()関数とは

  • 文字列を逆順(反転)に並べ替えるための関数です。
  • 反転後の文字列は、元の文字列そのものに上書きされて格納されます。

構文

strrev()関数の基本的な構文は次のとおりです。

strrev (string)

使用例1

次のプログラムは、strrev()関数の基本的な使い方を示したものです。

#include<stdio.h>
main ( ){
    char a[50] ;
    clrscr( );
    printf ("enter a string");
    gets (a);
    strrev (a);
    printf("reversed string = %s",a);
    getch ( );
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

enter a string Hello
Reverse string = olleH

使用例2

続いて、文字列の反転処理をより深く理解するために、もう一つの例を見てみましょう。strrevライブラリ関数を用いて文字列を反転させるCプログラムです。

#include<stdio.h>
#include<string.h>
void main(){
    char string[25];
    printf("Enter String to be reversed : ");
    gets(string);
    printf("String before strrev(): %s\n",string);
    strrev(string);
    printf("The string after strrev(): ");
    puts(string);
}

実行結果

このプログラムを実行すると、次のような結果が出力されます。

Enter String to be reversed : Tutorials Point
String before strrev(): Tutorials Point
The string after strrev(): tnioP slairotuT

注意点

strrev()関数はANSI標準Cの規格には含まれておらず、主にTurbo C++やBorland系コンパイラなど、一部の開発環境でのみ提供されている関数です。そのため、GCCやClangといった一般的なコンパイラでは使用できません。移植性の高いコードを書きたい場合は、ループ処理などを用いて文字列を自前で反転させる実装をおすすめします。

  1. C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説

    C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1

  2. C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説

    C言語のライブラリ関数 char *strcpy(char *dest, const char *src) は、src が指し示す文字列を dest にコピーするための関数です。 C言語では、文字の配列のことを「文字列」と呼びます。 文字列の宣言 文字列(文字配列)の宣言は、以下の形式で行います。 char stringname[size]; 例えば char string[50]; と宣言すると、最大50文字の文字列を格納できる配列が確保されます。 文字列の初期化 文字列の初期化には、主に以下の2つの方法があります。 1. 文字定数を使う方法 char string[10] = {H,