MENU

【C言語】複数の文字列を検索する方法を解説

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

目次から探す

文字列の検索方法

プログラミングにおいて、文字列の検索は非常に重要な操作です。

C言語では、単純な文字列の検索から複数の文字列を同時に検索する方法、さらには正規表現を使った文字列の検索まで、さまざまな方法があります。

単純な文字列の検索

まずは、単純な文字列の検索方法から見ていきましょう。

C言語では、strstr関数を使うことで文字列の中から指定した文字列を検索することができます。

以下に、strstr関数を使った単純な文字列の検索の例を示します。

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello, World!";
    char *result = strstr(str, "World");
    if (result != NULL) {
        printf("文字列が見つかりました: %s\n", result);
    } else {
        printf("文字列が見つかりませんでした\n");
    }
    return 0;
}

上記のコードでは、strstr関数を使って文字列strの中から文字列Worldを検索しています。

もし文字列が見つかれば、その位置を指すポインタが返されます。

見つからなかった場合は、NULLが返されます。

複数の文字列を同時に検索する方法

次に、複数の文字列を同時に検索する方法を見ていきましょう。

単純な文字列の検索と同様に、strstr関数を使いますが、複数の文字列を順番に検索していく必要があります。

以下に、複数の文字列を同時に検索する例を示します。

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello, World!";
    char *keywords[] = {"Hello", "World", "C"};
    int numKeywords = sizeof(keywords) / sizeof(keywords[0]);
    for (int i = 0; i < numKeywords; i++) {
        char *result = strstr(str, keywords[i]);
        if (result != NULL) {
            printf("文字列が見つかりました: %s\n", result);
        } else {
            printf("文字列が見つかりませんでした: %s\n", keywords[i]);
        }
    }
    return 0;
}

上記のコードでは、文字列strの中からキーワードとして指定した文字列を順番に検索しています。

もし文字列が見つかれば、その位置を指すポインタが返されます。

見つからなかった場合は、NULLが返されます。

正規表現を使った文字列の検索

最後に、正規表現を使った文字列の検索方法を見ていきましょう。

正規表現は、特定のパターンに一致する文字列を検索するための強力なツールです。

C言語では、regex.hライブラリを使うことで正規表現を扱うことができます。

以下に、regex.hライブラリを使った正規表現の検索の例を示します。

#include <stdio.h>
#include <regex.h>
int main() {
    char str[] = "Hello, World!";
    char *pattern = "W[a-z]+";
    regex_t regex;
    int reti;
    reti = regcomp(®ex, pattern, 0);
    if (reti) {
        printf("正規表現のコンパイルに失敗しました\n");
        return 1;
    }
    reti = regexec(®ex, str, 0, NULL, 0);
    if (!reti) {
        printf("文字列が見つかりました\n");
    } else if (reti == REG_NOMATCH) {
        printf("文字列が見つかりませんでした\n");
    } else {
        printf("正規表現の実行に失敗しました\n");
        return 1;
    }
    regfree(®ex);
    return 0;
}

上記のコードでは、文字列strの中から正規表現パターンW[a-z]+に一致する文字列を検索しています。

もし文字列が見つかれば、regexec関数0を返します。

見つからなかった場合は、REG_NOMATCHが返されます。

以上が、C言語における文字列の検索方法の解説です。

単純な文字列の検索から複数の文字列を同時に検索する方法、さらには正規表現を使った文字列の検索まで、さまざまな方法がありますので、適切な方法を選んで使いましょう。

目次から探す