программа для проверки подстроки.В чем дело - PullRequest
0 голосов
/ 17 февраля 2012

Программа для проверки, является ли вторая строка подстрокой первой строки.Он отображает «Да» для всех случаев. Более того, я получаю ошибку времени выполнения всякий раз, когда я даю вторую строку как «q ** q», почему так ..?* стоять за любое письмо.

#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    char str1[20], str2[20];
    int l1, l2, i1, i2=0;
    gets(str1);
    gets(str2);
    l1=strlen(str1);
    l2=strlen(str2);
    if(l1>=l2)
    {
        for(i1=0; i1<=l1-l2+i2, i2<l2; i1++)
        {
            if(str2[i2]==str1[i1])
            i2++;
        }
        if(i2==l2)
            printf("Yes");
        else
            printf("No");
    }
    else
        printf("No");

    getch();

    return 0;
}

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

Условие для выписки

for(i1=0; i1<=l1-l2+i2, i2<l2; i1++)

действительно не имеет смысла. Код i1<=l1-l2+i2, i2<l2 оценивает деталь перед запятой, отбрасывает результат , а затем оценивает деталь после запятой.

Возможно, вы намереваетесь написать i1<=l1-l2+i2 && i2<l2.

0 голосов
/ 24 сентября 2012
 int substring(char *s,char *t)
         {
                int i, j, k;

                for (i = 0; s[i]; i++)
                {   for (j = i, k = 0; t[k] && s[j] == t[k]; j++, k++)
                        ;
                    if (k > 0 && !t[k])
                        {
                             return i;
                        }

                       return -1;
               }
        }

Это рабочий код ... Как ваше решение не для Входная строка - anshulanananans, Строка поиска - anans

...