strrchr関数 - 文字が含まれているかを後ろから調べる
文字が含まれているかを後ろから調べるにはstrrchr関数を使用します。string.hを読み込むと、strrchr関数を使用できます。
#include <string.h> char *strrchr(const char *string, int ch);
stringの中にchが含まれている場合は、後ろから検索してマッチした最初のアドレスを返します。見つからなかった場合は、NULLを返します。
C言語では文字列は「\0」で終わるという約束事があります。strrchr関数は、この約束事を前提として、文字列の検索を行います。
strrchr関数を使う場合は、第一引数の文字列が「\0」で終わっていることを必ず確認してください。
文字が見つかった位置を取得する
strrchr関数で、後ろから検索して文字が見つかった位置を取得するサンプルです。最後の「:」が見つかった文字列の位置を表示します。
#include <string.h> #include <stdint.h> #include <stdio.h> int main(void) { const char* module_name = "Foo::Bar::Baz"; // 最後の「:」のアドレスを取得 const char* match_ptr = strrchr(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 3