Как упомянуто в заголовке, я хочу проверить, найдена ли подстрока в другой строке.
#include <stdio.h>
#include <stdlib.h>
int isIncluded(char *text, char* pattern);
int main()
{
char text[30];
char pattern[30]; int result;
printf(" Please introduce your text \n");
scanf("%s", &text);
printf(" Please introduce the pattern you are looking for \n");
scanf("%s", &pattern);
result = isIncluded( &text, &pattern);
if ( result == 1)
{
printf(" Your pattern has been found in your text \n " ) ;
}
if ( result == 0)
{
printf(" no substring found \n " ) ;
}
}
int isIncluded(char *text, char* pattern)
{
int ct = 0;
int numberofcharacters = 0;
while ( *pattern != '\0')
{
pattern++;
numberofcharacters++;
}
while ( *text != '\0' && pattern != '\0')
{
if ( *pattern == *text)
{
pattern++;
ct++;
text++;
}
else
{
text++;
}
}
if ( ct == numberofcharacters )
{
return(1);
}
else
{
return(0);
}
}
Идея состоит в том, чтобы сравнить первый символ текстовой переменной с переменной шаблона,Возьмем пример:
Предположим, у нас есть «TEXT» в текстовой переменной и «EX» в шаблоне:
Я начинаю сравнивать T с E, в этом случае, нет совпадения.
Я указываю на E и снова сравниваю, есть совпадение.
Из-за совпадения я указываю на X в шаблоне и делаю то же самое в тексте, и я делаю еще один тест.
2-е совпадение, поэтому количество символов в переменной pattern будет таким же, как и в переменной ct, которая учитывается только при совпадении.
Следовательно, возвращаемое значение должно быть равно 1.
Код всегда возвращает ноль.Я не понимаю, почему?