BohYoh.comトップページへ  strstr
C言語 標準ライブラリ アルファベット順索引 ヘッダ別索引 ホームページへ C言語講座のページ

探索関数
strstr
ヘッダ #include <string.h>
形 式 char *strstr(const char *s1, const char *s2);
機 能 s1が指す文字列の中で最も先頭側に出現する、s2が指す文字列と同じ文字の並び(ナル文字は含まない)を探す。
返却値 探し出した文字の並びの先頭文字へのポインタを返し、見つからなかった場合は、空ポインタを返す。s2が長さ0の文字列であればs1を返す。

■実装例A■

#include <string.h> char *strstr(const char *s1, const char *s2) { if (*s2 == '\0') return ((char *)s1); /* s2は空文字列 */ for ( ; (s1 = strchr(s1, *s2)) != NULL; ++s1) { /* strchrを利用 */ const char *sc1 = s1; const char *sc2 = s2; do { if (*++sc2 == '\0') return ((char *)s1); } while (*++sc1 == sc2); } return (NULL); }

■実装例B■

#include <string.h> char *strstr(const char *s1, const char *s2) { const char *p1 = s1; const char *p2 = s2; while (*p1 && *p2) { if (*p1 == *p2) { p1++; p2++; } else { p1 -= p2 - s2 - 1; p2 = s2; } } return (*p2 ? NULL : (char *)(p1 - (p2 - s2))); }


BohYoh.comトップページへ