この記事では、C言語で文字列を検索する方法について解説します。
目次から探す
文字列の検索方法
文字列を検索する方法には、いくつかのアプローチがあります。
ここでは、C言語で文字列を検索するための3つの方法を紹介します。
文字列を一文字ずつ比較する方法
文字列を一文字ずつ比較する方法は、基本的なアルゴリズムです。
以下の手順で実装することができます。
- 検索対象の文字列と検索する文字列を入力します。
- 検索対象の文字列の先頭から順に、検索する文字列の先頭と一致するかどうかを比較します。
- 一致しない場合は、検索対象の文字列を1文字ずつずらして再度比較します。
- 一致する場合は、検索対象の文字列の位置を出力します。
以下に、この方法を用いたサンプルコードを示します。
#include <stdio.h>
#include <string.h>
int main() {
char target[] = "Hello, World!";
char search[] = "World";
int target_len = strlen(target);
int search_len = strlen(search);
int i, j;
for (i = 0; i <= target_len - search_len; i++) {
for (j = 0; j < search_len; j++) {
if (target[i + j] != search[j]) {
break;
}
}
if (j == search_len) {
printf("検索文字列が見つかりました。位置: %d\n", i);
}
}
return 0;
}
上記のコードでは、target
という検索対象の文字列とsearch
という検索する文字列を用意し、target
の中からsearch
を検索しています。
もし検索文字列が見つかった場合は、その位置を出力します。
ライブラリ関数を使った方法
C言語には、文字列を検索するための便利なライブラリ関数が用意されています。
その中でも代表的な関数として、strstr関数
があります。
この関数を使うと、簡単に文字列を検索することができます。
以下に、strstr関数
を使ったサンプルコードを示します。
#include <stdio.h>
#include <string.h>
int main() {
char target[] = "Hello, World!";
char search[] = "World";
char *result;
result = strstr(target, search);
if (result != NULL) {
printf("検索文字列が見つかりました。位置: %ld\n", result - target);
}
return 0;
}
上記のコードでは、target
という検索対象の文字列とsearch
という検索する文字列を用意し、strstr関数
を使ってtarget
の中からsearch
を検索しています。
もし検索文字列が見つかった場合は、その位置を出力します。
自作関数を使った方法
もし、ライブラリ関数を使わずに自分で文字列の検索関数を作成したい場合は、以下のような関数を実装することができます。
#include <stdio.h>
int search_string(char *target, char *search) {
int i, j;
for (i = 0; target[i] != '\0'; i++) {
for (j = 0; search[j] != '\0'; j++) {
if (target[i + j] != search[j]) {
break;
}
}
if (search[j] == '\0') {
return i;
}
}
return -1;
}
int main() {
char target[] = "Hello, World!";
char search[] = "World";
int result;
result = search_string(target, search);
if (result != -1) {
printf("検索文字列が見つかりました。位置: %d\n", result);
}
return 0;
}
上記のコードでは、search_string
という自作の検索関数を定義し、target
という検索対象の文字列とsearch
という検索する文字列を用意しています。
search_string関数
を使ってtarget
の中からsearch
を検索し、もし検索文字列が見つかった場合は、その位置を返します。
以上が、C言語で文字列を検索するための3つの方法です。