В этой записи блога мы рассмотрим различные методы проверки наличия строки внутри другой строки на языке программирования 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(®ex, pattern, 0) == 0) {
if (regexec(®ex, str, 0, NULL, 0) == 0) {
printf("Substring found!\n");
} else {
printf("Substring not found!\n");
}
regfree(®ex);
}
return 0;
}
В этой статье мы рассмотрели несколько методов проверки того, содержится ли строка в другой строке в C. Мы рассмотрели функцию strstr() для базового обнаружения подстроки, циклический подход для сравнения символов и использование обычных выражения для более сложного сопоставления с образцом. В зависимости от ваших конкретных требований вы можете выбрать метод, который соответствует вашим потребностям. Приятного программирования!
Не забудьте оптимизировать свой блог для SEO, включив в него соответствующие ключевые слова и фразы, связанные с программированием на C, манипуляцией со строками и поиском строк.