Расположение строки Q в строке S - C (СИ)
Формулировка задачи:
Написать программу, которая определяет, где находится (в начале; в середине; в конце) введенная подстрока Q в заданной строке S. Написал только чтобы проверить в конце ли находится, не могу понять как проверить в середине ли.
#include <stdio.h> #define size 100 int main() { char *s[size], *q[size]; printf("S: "); gets(s); printf("Q: "); gets(q); char *ps, *pq; char *bs, *bq; for (bs = s; *bs != 0; ++bs); for (bq = q; *bq != 0; ++bq); for (ps = bs - 1, pq = bq - 1; (ps >= s) && (pq >= q); --ps, --pq) { if (*ps != *pq) { puts("Not end"); break; } else { puts("End"); break; } } _getch(); return 0; }
Решение задачи: «Расположение строки Q в строке S»
textual
Листинг программы
char *p = strstr(s, q); if (p!=NULL) { if (p==s) printf("В начале"); else if (strlen(p)==strlen(q)) printf("В конце"); else printf("В середине"); } else printf("Не находится");
Объяснение кода листинга программы
s
- исходная строка, в которой ищется подстрокаq
.q
- подстрока, которую ищут в строкеs
.p
- указатель на первый символ подстрокиq
, найденной в строкеs
.strstr(s, q)
- функция, которая ищет первое вхождение подстрокиq
в строкеs
и возвращает указатель на первый символ подстроки (если подстрока найдена), илиNULL
(если подстрока не найдена).if (p!=NULL)
- проверка, была ли найдена подстрокаq
в строкеs
.if (p==s)
- проверка, является ли подстрокаq
началом строкиs
.else if (strlen(p)==strlen(q))
- проверка, является ли подстрокаq
концом строкиs
.else
- проверка, является ли подстрокаq
частью строкиs
, но не является ни началом, ни концом.printf(
В начале);
- вывод сообщения, если подстрокаq
является началом строкиs
.printf(
В конце);
- вывод сообщения, если подстрокаq
является концом строкиs
.printf(
В середине);
- вывод сообщения, если подстрокаq
является частью строкиs
, но не является ни началом, ни концом.printf(
Не находится);
- вывод сообщения, если подстрокаq
не найдена в строкеs
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д