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
C言語ゼミ


