【C言語】検索する文字列が何番目の位置にあるのか調べる方法

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

目次から探す

文字列の検索方法

文字列を検索する方法には、いくつかのアプローチがあります。

ここでは、C言語で文字列を検索するための3つの方法を紹介します。

文字列を一文字ずつ比較する方法

文字列を一文字ずつ比較する方法は、基本的なアルゴリズムです。

以下の手順で実装することができます。

  1. 検索対象の文字列と検索する文字列を入力します。
  2. 検索対象の文字列の先頭から順に、検索する文字列の先頭と一致するかどうかを比較します。
  3. 一致しない場合は、検索対象の文字列を1文字ずつずらして再度比較します。
  4. 一致する場合は、検索対象の文字列の位置を出力します。

以下に、この方法を用いたサンプルコードを示します。

#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つの方法です。

目次から探す