Расположение строки 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("Не находится");

Объяснение кода листинга программы

  1. s - исходная строка, в которой ищется подстрока q.
  2. q - подстрока, которую ищут в строке s.
  3. p - указатель на первый символ подстроки q, найденной в строке s.
  4. strstr(s, q) - функция, которая ищет первое вхождение подстроки q в строке s и возвращает указатель на первый символ подстроки (если подстрока найдена), или NULL (если подстрока не найдена).
  5. if (p!=NULL) - проверка, была ли найдена подстрока q в строке s.
  6. if (p==s) - проверка, является ли подстрока q началом строки s.
  7. else if (strlen(p)==strlen(q)) - проверка, является ли подстрока q концом строки s.
  8. else - проверка, является ли подстрока q частью строки s, но не является ни началом, ни концом.
  9. printf(В начале); - вывод сообщения, если подстрока q является началом строки s.
  10. printf(В конце); - вывод сообщения, если подстрока q является концом строки s.
  11. printf(В середине); - вывод сообщения, если подстрока q является частью строки s, но не является ни началом, ни концом.
  12. printf(Не находится); - вывод сообщения, если подстрока q не найдена в строке s.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы