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

関連情報