文字を検索するには strchr() または strrchr() を使う。
strchr() は文字列の先頭から文字を検索する。
strrchr() は文字列の末尾から文字を検索する。
なお、これらの関数で検索できるのは〝文字〟であり〝文字列〟ではないことに留意する。
先頭から文字を検索する
strchr() は指定された文字を最初に検出したポインタを返す。
#include <string.h> char *strchr(const char *string, int c);
引数
string
文字列c
検索する文字
戻り値
指定された文字を最初に検出したポインタ。
文字が見つからなかった場合は NULL が返る。
例
次のプログラムは、文字列 “Hello World!” の中で最初にある “o” のポインタを返す。
char buf[] = "Hello World!";
char *p;
p = strchr(buf, 'o');
printf("%s\n", p);
/* → o World! */末尾から文字を検索する
strrchr() は指定された文字を最後に検出したポインタを返す。
#include <string.h> char *strrchr(const char *string, int c);
引数
string
文字列c
検索する文字
戻り値
指定された文字を最後に検出したポインタ。
文字が見つからなかった場合は NULL が返る。
例
次のプログラムは、文字列 “Hello World!” の中で最後にある “o” のポインタを返す。
char buf[] = "Hello World!";
char *p;
p = strrchr(buf, 'o');
printf("%s\n", p);
/* → orld! */文字群を検索する
#include <string.h> char *strpbrk(const char *string, const char *search_chars);
string 内で search_chars の文字のいずれかが最初に現れる位置を検索する。
文字列ではなく文字群であることに注意する。
たとえば search_chars が “AB” の場合、“A” または “B” での検索となる。
戻り値として文字が最初に現れる位置のポインタを返す。 いずれの文字も見つからない場合は NULL を返す。
次の例は、文字列 “HELLO WORLD!” の中で “R” または “W” のいずれかが最初に現れる位置のポインタを取得する。
char string[] = "HELLO WORLD!";
char search_chars[] = "RW";
char *p = NULL;
p = strpbrk(string, search_chars);
if (p == NULL) {
printf("No characters.\n");
} else {
printf("Result:\"%s\"\n", p);
}プログラムの実行結果は以下のようになる。
(“W” の方が先に見つかる)
Result:"WORLD!"
文字列を検索する
#include <string.h> char *strstr(const char *string, const char *search_string);
string 内で search_string が最初に現れる位置を検索する。
search_string のヌル文字は検索対象に含まれない。
戻り値として search_string が最初に現れる位置のポインタを返す。
見つからない場合は NULL を返す。
次のプログラムは、文字列 “HELLO WORLD!” の中で最初にある “WORLD” の位置を取得する。
char string[] = "HELLO WORLD!";
char search_string[] = "WORLD";
char *p = NULL;
p = strstr(string, search_string);
if (p == NULL) {
printf("No strings.\n");
} else {
printf("Result:\"%s\"\n", p);
}プログラムの実行結果は以下のようになる。
Result:"WORLD!"