Это мой исходный код:C - почему он возвращает мне значение NULL каждый раз?
size_t ft_strlen(char const *str)
{
return ((*str) ? ft_strlen(++str) + 1 : 0);
}
int ft_memcmp(void const *s1, void const *s2, size_t const n)
{
size_t i;
i = 0;
while (i < n)
{
if (((char *)s1)[i] != ((char *)s2)[i])
return (((char *)s1)[i] - ((char *)s2)[i]);
i++;
}
return (0);
}
char *ft_strstr(char *s1, char const *s2)
{
if (!*s1)
return (NULL);
return (!ft_memcmp(++s1, s2, ft_strlen(s2)) ? s1 : NULL);
}
int main(void)
{
printf("%s\n", ft_strstr("Bonjour", "jour"));
return (0);
}
У меня есть проблемы с возвращаемым значением
В основной функции, поэтому он возвращает мне не s1, здесь «Jour»?
Вы используете strlen рекурсивно ?! Зачем? –
Я предлагаю отладить его с помощью gdb (отладка - создавать контрольные точки и контролировать переменные). Вы также можете вручную отлаживать, распечатывая значения в функциях. – Spidey
Уильям Нет отношений с сообщением. –