この記事では、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言語における文字列の検索方法の解説です。
単純な文字列の検索から複数の文字列を同時に検索する方法、さらには正規表現を使った文字列の検索まで、さまざまな方法がありますので、適切な方法を選んで使いましょう。