strchr関数 - 文字が含まれているかをチェックする
文字列の中にある文字が含まれているかをチェックするにはstrchr関数を使用します。string.hを読み込むと、strchr関数を使用できます。
#include <string.h> char *strchr(const char *string, int ch);
stringの中にchが含まれている場合は、マッチした最初のアドレスを返します。見つからなかった場合は、NULLを返します。
C言語では文字列は「\0」で終わるという約束事があります。strchr関数は、この約束事を前提として、文字列の検索を行います。
strchr関数を使う場合は、第一引数の文字列が「\0」で終わっていることを必ず確認してください。
文字が見つかった位置を取得する
strchr関数で、文字が見つかった位置を取得するサンプルです。最初の「:」が見つかった文字列の位置を表示します。
#include <string.h> #include <stdint.h> #include <stdio.h> int main(void) { const char* module_name = "Foo::Bar::Baz"; // 最初の「:」のアドレスを取得 const char* match_ptr = strchr(module_name, ':'); if (match_ptr != NULL) { // 見つかった位置(相対位置)を計算 int32_t match_index = match_ptr - module_name; printf("Match Position %d\n", match_index); } else { printf("Not Match\n"); } }
出力結果です。
Match Position 9