Как узнать, существует ли массив символов в другом массиве символов без использования библиотеки строк? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть два char массива char search_array[8] и input_array[30], и я получаю символы с помощью getchar, но я хочу выяснить, существует ли поисковый массив во входном массиве без использования строковой библиотеки.

Пример:

поисковый массив: hello

входной массив hello, how are you

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Вам нужен какой-то цикл сравнения строк, например, тот, который вы можете найти в strcmp или strcspn.Предполагается, что вы используете значение терминала, например, строки C;если вы используете какое-то поле длины, вам нужно будет внести изменения в петли, чтобы четко их учесть.

1 голос
/ 05 апреля 2019

Очевидное решение для вашей цели - использовать функцию strstr стандартной библиотеки.

Поскольку вам не разрешено использовать библиотеку строк , вы должны написать свою собственную версию strstr и использовать ее.

Вот простая, но соответствующая реализация:

char *my_strstr(const char *s1, const char *s2) {
    for (;;) {
        for (size_t i = 0;; i++) {
            if (s2[i] == '\0')
                return (char *)s1;
            if (s1[i] != s2[i])
                break;
        }
        if (*s1++ == '\0')
            return NULL;
    }
}

Затем вы используете эту функцию следующим образом:

    if (my_strstr(input_array, search_array)) {
        printf("string was found\n");
    } else {
        printf("string was not found\n");
    }
...