Применить функцию getchar в программе, которая определяет, сколько раз содержится в строке заданное слово - C (СИ)
Формулировка задачи:
Всем доброго вечернего времени суток! Хочу попросить вашей помощи. Данная программа определяет сколько содержится раз в строке, которая вводится с клавиатуры, слово "proga". Но нужно вместо функции fgets применить getchar.
Вот сам код:
Листинг программы
- #include <stdio.h>
- #include <string.h>
- const int N = 100;
- int main(void)
- {
- int len, count;
- char s[N], word[] = "proga", *p, *start;
- printf("\nВведите текст: " );
- fgets (s, N, stdin);
- len = strlen (word);
- count = 0;
- start = s;
- while (1)
- {
- p = strstr (start, word);
- if (p == NULL) break;
- count ++;
- start = p + len;
- }
- printf ("Этот текст встречает слово %d раз/раза \n", count);
- return 0;
- }
Решение задачи: «Применить функцию getchar в программе, которая определяет, сколько раз содержится в строке заданное слово»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <locale.h>
- const int N = 100;
- int my_fgets(char* s, const int N)
- {
- int i = 0;
- char ch;
- if (i > N - 2)
- {
- printf("Недостаточный размер массива!\n");
- return 0;
- }
- while (ch = getchar())
- {
- s[i] = ch;
- if (ch == '\n')
- {
- ++i;
- s[i] = '\0';
- return 1;
- }
- if (i == N - 2)
- {
- s[i++] = '\n';
- s[i] = '\0';
- printf("Недостаточный размер массива!\n");
- return 0;
- }
- ++i;
- }
- return 1;
- }
- int main(void)
- {
- setlocale(0, "");
- int len, count;
- char s[N], word[] = "proga", *p, *start;
- printf("\nВведите текст: " );
- if (my_fgets (s, N))
- {
- len = strlen (word);
- count = 0;
- start = s;
- while (1)
- {
- p = strstr (start, word);
- if (p == NULL) break;
- count ++;
- start = p + len;
- }
- printf ("Этот текст встречает слово %d раз/раза \n", count);
- }
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками.
- Объявление константы N, которая определяет максимальный размер вводимого текста.
- Определение функции my_fgets, которая считывает вводимый текст и возвращает его длину. Если текст превышает размер массива, выводится сообщение об ошибке и возвращается 0.
- В функции main() устанавливается стандартная локальная настройка.
- Объявление переменных len, count, s, word, p и start.
- Вывод сообщения с просьбой ввести текст.
- Проверка успешности считывания текста функцией my_fgets. Если считывание прошло успешно, выполняется следующий код.
- Вычисление длины слова word и инициализация переменной count значением 0.
- Установка указателя start на начало введенного текста.
- Организация цикла while, который выполняется до тех пор, пока не будет найдено следующее вхождение слова word.
- В каждой итерации цикла while проверяется, найдено ли вхождение слова word. Если да, увеличивается значение переменной count и сдвигается указатель start на длину слова word.
- После окончания цикла while выводится количество найденных вхождений слова word.
- Завершение функции main() и возвращение 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д