Проверьте подстроку строки - PullRequest
2 голосов
/ 12 мая 2010

Я пытаюсь проверить, является ли второй аргумент в моей программе подстрокой первого аргумента. Проблема в том, что он работает, только если подстрока начинается с той же буквы строки.

РЕДАКТИРОВАТЬ: это должно быть сделано в C, а не C ++.

int main(int argc, char **argv){

    if (argc != 3) {
        printf ("Usage: check <string one> <string two>\n");
    }

    int result = my_strstr(argv[1], argv[2]);

    if(result == 1){
        printf("%s is a substring of %s\n", argv[2], argv[1]);
    }
    else{
        printf("%s is not a substring of %s\n", argv[2], argv[1]);
    }
    return 0;
}

Ответы [ 3 ]

2 голосов
/ 12 мая 2010

Я предполагаю домашнее задание, поэтому: посмотрите, что инициализируется subStart.

1 голос
/ 12 мая 2010

Ваш анализ проблемы («она работает только в том случае, если подстрока начинается с той же буквы строки») неверен, и вы ищете не ту проблему.Поскольку это, кажется, домашнее задание, я просто намекаю на основную проблему.

Несмотря на то, что она не работает с Michigan и igan, она будет корректно работать с Michigan и higan.

Почему это работает для higan, а не igan?Какая первая буква igan?Чем отличается это, когда дело доходит до Michigan?

1 голос
/ 12 мая 2010

Ваш алгоритм неверен.

То, что вы хотите, это вложенные циклы. Выполните цикл по длине str, затем выполните цикл по длине sub, чтобы увидеть, есть ли совпадение, начинающееся в этой позиции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...