Почему функция findString() возвращает указанные значения для данных аргументов?требуется объяснение результата, возвращаемого функцией findString()
FindString ("текст", "") возвращает 0.
FindString ("", "Текст") возвращает -1.
findString ("", "") возвращает -1.
Я прочитал на strstr и посмотрел на другие вопросы и просто не понял.
// find s1 inside source, return index number if found, -1 if not found
#include <stdio.h>
#include <stdbool.h>
int findString (const char source[], const char s[])
{
int i, j, foundit = false;
// try each character in source
for (i = 0; source[i] != '\0' && !foundit; ++i) {
foundit = true;
// now see if corresponding chars from s match
for (j = 0; s[j] != '\0' && foundit; ++j)
if (source[j + i] != s[j] || source[j + i] == '\0')
foundit = false;
if (foundit)
return i;
}
return -1;
}
int main (void)
{
int index;
printf ("index = %i\n", findString("text", ""));
printf ("index = %i\n", findString("", "text"));
printf ("index = %i\n", findString("", ""));
return 0;
}
Вы пробовали пройти через отладчик? Какую IDE вы используете? – Podo
gcc, minGW и блокнот – user6923395
Случайное чтение подсказывает, что функция может быстро выручить, а затем возвращает -1. Пространственный случай, который ищет пустую строку, также кажется логичным. – usr2564301