この記事では、C言語で文字列を検索する方法について解説します。
目次から探す
文字列の検索方法
文字列を検索する方法には、いくつかのアプローチがあります。
文字列を一文字ずつ比較する方法
文字列を一文字ずつ比較する方法は、基本的なアルゴリズムです。
以下の手順で実装することができます。
- 検索対象の文字列と検索する文字列を用意します。
- 検索対象の文字列の先頭から順に、検索する文字列の先頭と一致するかどうかを比較します。
- 一致しない場合は、検索対象の文字列を1文字ずつずらして再度比較します。
- 一致する場合は、検索対象の文字列の位置を出力します。
以下に、この方法を用いたサンプルコードを示します。
#include <stdio.h>
#include <string.h>
int search_string(char* target, char* search) {
int target_len = strlen(target);
int search_len = strlen(search);
for (int i = 0; i <= target_len - search_len; i++) {
int j;
for (j = 0; j < search_len; j++) {
if (target[i + j] != search[j]) {
break;
}
}
if (j == search_len) {
return i + 1; // 検索結果の位置を返す
}
}
return -1; // 検索結果が見つからなかった場合
}
int main() {
char target[] = "Hello, World!";
char search[] = "World";
int result = search_string(target, search);
if (result != -1) {
printf("検索結果: %d文字目\n", result);
} else {
printf("検索結果: 見つかりませんでした\n");
}
return 0;
}
上記のコードでは、search_string関数
を定義しています。
この関数は、検索対象の文字列と検索する文字列を引数として受け取り、検索結果の位置を返します。
main関数
では、target
とsearch
という文字列を用意し、search_string関数
を呼び出して検索を行っています。
ライブラリ関数を使った方法
C言語には、文字列を検索するための便利なライブラリ関数が用意されています。
その中でも、strstr関数
は特によく使われます。
この関数を使うと、指定した文字列が他の文字列内に存在するかどうかを簡単に検索することができます。
以下に、strstr関数
を使ったサンプルコードを示します。
#include <stdio.h>
#include <string.h>
int main() {
char target[] = "Hello, World!";
char search[] = "World";
char* result = strstr(target, search);
if (result != NULL) {
int position = result - target + 1; // 検索結果の位置を計算
printf("検索結果: %d文字目\n", position);
} else {
printf("検索結果: 見つかりませんでした\n");
}
return 0;
}
上記のコードでは、strstr関数
を使って検索を行っています。
target
とsearch
という文字列を用意し、strstr関数
を呼び出して検索を行います。
strstr関数
は、検索結果の位置をポインタとして返すため、そのポインタを使って位置を計算しています。
大文字と小文字を区別せずに検索する場合は、別途処理を行う必要があります。
以上が、C言語で文字列を検索する方法です。