Подсчитать количество вхождений слова "мама" в строку и вывести номера первых позиций этих вхождений - C (СИ)
Формулировка задачи:
Не выводит номер позиции. Помогите пожалуйста
Подсчитать количество вхождений слова «мама» в строку и вывести номера первых позиций этих вхождений. Если этого слова в строке нет, то вывести об этом информацию.
#include "stdafx.h"
#include "windows.h"
#include "iostream"
#include "string.h"
int main()
{
setlocale (LC_ALL,"RUS");
int n=0;
char s[100];
printf ("Введите строку\n");
gets(s);
char *p=s;
while(*p)
{
p=strstr( p, "mama");
if(p==NULL) break;
n++;
p++;
}
printf("Номер позиции %d\n", p);
printf("Количество вхождений = %d\n", n);
system("pause");
return 0;
}Решение задачи: «Подсчитать количество вхождений слова "мама" в строку и вывести номера первых позиций этих вхождений»
textual
Листинг программы
printf("Номер позиции: %d\n", p-s);
Объяснение кода листинга программы
В данном коде происходит следующее:
- Вводится строка s, в которую затем добавляются различные символы и слова, в том числе и слово
мама. - Затем в цикле происходит поиск слова
мамав строке s с помощью функции strstr(). Функция возвращает указатель на первое вхождение подстрокимамав строку s. Если подстрока не найдена, то возвращается значение NULL. - Если функция strstr() вернула не NULL, то значит подстрока
маманайдена в строке s. В этом случае измеряется расстояние от начала строки s до первого вхождения подстрокимамас помощью функции ptrdiff(). Полученное значение сохраняется в переменной p. - Затем выводится сообщение с номером позиции первого вхождения слова
мамав строку s с помощью функции printf(). Список действий в коде: - Ввод строки s.
- Добавление различных символов и слов в строку s.
- Поиск слова
мамав строке s с помощью функции strstr(). - Измерение расстояния от начала строки s до первого вхождения подстроки
мамас помощью функции ptrdiff(). - Вывод сообщения с номером позиции первого вхождения слова
мамав строку s с помощью функции printf().