Изучение нескольких методов проверки того, содержится ли строка в другой строке в C

В этой записи блога мы рассмотрим различные методы проверки наличия строки внутри другой строки на языке программирования C. Мы рассмотрим различные подходы и предоставим примеры кода для каждого метода. Независимо от того, являетесь ли вы новичком или опытным программистом, эти методы помогут вам эффективно обнаруживать подстроки в C. Начнем!

Метод 1: использование функции strstr()
Функция strstr() — это стандартная библиотечная функция языка C, которая ищет первое вхождение подстроки в строке. Он возвращает указатель на первое вхождение подстроки, если она найдена, или NULL, если подстрока отсутствует.

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello World";
    char substr[] = "World";
    if (strstr(str, substr) != NULL) {
        printf("Substring found!\n");
    } else {
        printf("Substring not found!\n");
    }
    return 0;
}

Метод 2: использование цикла и сравнение символов.
Другой подход предполагает использование цикла для перебора символов строки и сравнения их с символами подстроки.

#include <stdio.h>
#include <string.h>
int isSubstring(char str[], char substr[]) {
    int strLen = strlen(str);
    int substrLen = strlen(substr);
    for (int i = 0; i <= strLen - substrLen; i++) {
        int j;
        for (j = 0; j < substrLen; j++) {
            if (str[i + j] != substr[j])
                break;
        }
        if (j == substrLen)
            return 1;
    }
    return 0;
}
int main() {
    char str[] = "Hello World";
    char substr[] = "World";
    if (isSubstring(str, substr)) {
        printf("Substring found!\n");
    } else {
        printf("Substring not found!\n");
    }
    return 0;
}

Метод 3: использование регулярных выражений
Если вам нужны более расширенные возможности сопоставления с образцом, вы можете использовать регулярные выражения. Язык программирования C не имеет встроенной поддержки регулярных выражений, но вы можете использовать внешние библиотеки, такие как PCRE (Perl-совместимые регулярные выражения) или regex.h.

Вот пример использования библиотеки regex.h:

#include <stdio.h>
#include <regex.h>
int main() {
    char str[] = "Hello World";
    char pattern[] = "World";
    regex_t regex;
    if (regcomp(&regex, pattern, 0) == 0) {
        if (regexec(&regex, str, 0, NULL, 0) == 0) {
            printf("Substring found!\n");
        } else {
            printf("Substring not found!\n");
        }
        regfree(&regex);
    }
    return 0;
}

В этой статье мы рассмотрели несколько методов проверки того, содержится ли строка в другой строке в C. Мы рассмотрели функцию strstr() для базового обнаружения подстроки, циклический подход для сравнения символов и использование обычных выражения для более сложного сопоставления с образцом. В зависимости от ваших конкретных требований вы можете выбрать метод, который соответствует вашим потребностям. Приятного программирования!

Не забудьте оптимизировать свой блог для SEO, включив в него соответствующие ключевые слова и фразы, связанные с программированием на C, манипуляцией со строками и поиском строк.