MENU

【C言語】後ろから文字列を検索する方法を解説

この記事では、C言語で後ろから文字列を検索する方法について解説します。

目次から探す

後ろから文字列を検索する方法

プログラミングにおいて、文字列の中から特定の文字列を検索することは非常によく行われる操作です。

通常、文字列の検索は先頭から順番に行われますが、場合によっては文字列の末尾から逆方向に検索する必要があることもあります。

プログラムの実装方法

C言語では、文字列の後ろから検索するためのいくつかの方法があります。

以下に代表的な方法を紹介します。

  1. ループを使用した方法
  • 文字列の末尾から1文字ずつ比較し、目的の文字列と一致するかどうかを確認します。
  • 一致した場合は、目的の文字列が見つかったと判断します。
  • 一致しなかった場合は、一つ前の文字に移動して再度比較を行います。
  • これを繰り返し、目的の文字列が見つかるか、比較対象の文字列が終了するまで続けます。
  1. ライブラリ関数を使用した方法
  • C言語には、文字列操作に便利なライブラリ関数が用意されています。
  • strrchr関数を使用すると、指定した文字列の末尾から目的の文字列を検索することができます。
  • strrchr関数は、目的の文字列が見つかった場合にはその位置へのポインタを返し、見つからなかった場合にはNULLを返します。

サンプルコード

以下に、上記で紹介した2つの方法を使用したサンプルコードを示します。

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello, World!";
    char target[] = "World";
    // ループを使用した方法
    int str_len = strlen(str);
    int target_len = strlen(target);
    int i, j;
    for (i = str_len - target_len; i >= 0; i--) {
        for (j = 0; j < target_len; j++) {
            if (str[i + j] != target[j]) {
                break;
            }
        }
        if (j == target_len) {
            printf("文字列が見つかりました\n");
            break;
        }
    }
    // ライブラリ関数を使用した方法
    char *result = strrchr(str, 'o');
    if (result != NULL) {
        printf("文字列が見つかりました\n");
    }
    return 0;
}

上記のサンプルコードでは、まずループを使用した方法で文字列を検索しています。

次に、ライブラリ関数のstrrchrを使用した方法で文字列を検索しています。

どちらの方法でも、目的の文字列が見つかった場合には「文字列が見つかりました」というメッセージが表示されます。

注意点:文字列の検索は大文字と小文字を区別します。

また、目的の文字列が複数回出現する場合には、最後に出現した位置が返されます。

以上が、C言語で後ろから文字列を検索する方法の解説です。

目次から探す