【C言語】文字列を検索して最初に現れる位置を取得する方法

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

目次から探す

文字列の検索方法

文字列を検索する方法には、ライブラリ関数を使った方法と手動での検索方法の2つがあります。

ライブラリ関数を使った検索方法

C言語には、文字列を検索するための便利なライブラリ関数が用意されています。

その中でも代表的な関数として、strstr関数があります。

strstr関数は、指定した文字列内で特定の文字列を検索し、最初に現れる位置を返します。

以下は、strstr関数を使った文字列の検索の例です。

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

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

もし検索文字列が見つかれば、その位置を表示します。

見つからなかった場合は、見つからなかったことを表示します。

手動での検索方法

もしライブラリ関数を使わずに手動で文字列を検索する場合は、ループを使って文字列を一文字ずつ比較していく方法があります。

以下は、手動での文字列の検索の例です。

#include <stdio.h>
int main() {
    char str[] = "Hello, World!";
    char search[] = "World";
    int str_len = strlen(str);
    int search_len = strlen(search);
    int i, j;
    for (i = 0; i <= str_len - search_len; i++) {
        for (j = 0; j < search_len; j++) {
            if (str[i + j] != search[j]) {
                break;
            }
        }
        if (j == search_len) {
            printf("検索文字列が見つかりました。位置: %d\n", i);
            break;
        }
    }
    if (i > str_len - search_len) {
        printf("検索文字列が見つかりませんでした。\n");
    }
    return 0;
}

上記のコードでは、ループを使って文字列str内で文字列searchを検索しています。

もし検索文字列が見つかれば、その位置を表示します。

見つからなかった場合は、見つからなかったことを表示します。

以上が、C言語で文字列を検索する方法の例です。

ライブラリ関数を使った方法と手動での検索方法のどちらを使っても、目的の文字列を見つけることができます。

目次から探す