Применить функцию 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д