これは、標準がそれについて言わなければならないすべてです:
7.21.5.7strstr
関数
あらすじ
#include <string.h>
char *strstr(const char *s1, const char *s2);
説明
strstr 関数は、s2 が指す文字列内の一連の文字 (終端のヌル文字を除く) が、s1 が指す文字列内で最初に出現する位置を特定します。
戻り値
strstr 関数は、見つかった文字列へのポインターを返すか、文字列が見つからない場合は null ポインターを返します。s2 が長さゼロの文字列を指している場合、関数は s1 を返します。
したがって、const
引数に修飾子がないようです。
スタイルに関しては、 に置き換えることができ、ポインタのインデックス付けに使用するのに最適なタイプであることに注意して*(ptr+index)
ください。ptr[index]
size_t
それを実装する一般的な方法については、GCC のコードと比較してください。
char *
strstr (const char *s1, const char *s2)
{
const char *p = s1;
const size_t len = strlen (s2);
for (; (p = strchr (p, *s2)) != 0; p++)
{
if (strncmp (p, s2, len) == 0)
return (char *)p;
}
return (0);
}