Это все, что стандарт говорит об этом:
7.21.5.7 Функция strstr
Синопсис
#include <string.h>
char *strstr(const char *s1, const char *s2);
Описание
Функция strstr находит первый
вхождение в строке, на которую указывает
s1 последовательности символов
(исключая завершающий ноль
символ) в строке, на которую указывает
s2.
Возвращает
Функция strstr
возвращает указатель на найденный
строка или нулевой указатель, если
Строка не найдена. Если 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);
}