この関数の目的
strchr()は、文字列中の文字を検索する。
定義
#include <string.h> char *strchr(const char *s, int c);
働き
この関数は、 s が指す文字列の中で最初の( char
に変換された) c が出現する位置を特定する。
終端のヌル文字は文字列の一部とみなされる。
返り値は、特定された文字へのポインタか、文字列内に文字が出現しなければヌルポインタである。
解説
ヌル文字より後の文字は検索されないが、ヌル文字自身は検索の対象になる。
よって、 strchr(s, '\0')
とすれば文字列 s の終端ヌル文字へのポインタが得られる。
これは &s[strlen(s)]
としても同じことである。
得られた文字が何文字目に当たるかを知るには、以下の例が参考になると思う。
#include <stdio.h> #include <string.h> void main(void){ const char *s = "Jugemu Jugemu Gokohno Surikire"; const char *p = s; while(p = strchr(p, 'u')){ printf("%u ", (unsigned)(p - s)); p++; } } /* 出力例: 1 5 8 12 23 */