Подсчет символов, строк и слов на языке C
Программа считает количество введенных пользователем символов, строк и слов. Чтобы программа корректно закончила работу и правильно посчитала, после набора строк надо перейти на новую строку, после чего нажать Ctrl + D (в терминале Linux) или Ctrl + Z (в Windows).
- Программа будет работать до тех пор, пока не будет получен сигнал окончания потока ввода -
EOF
(подробнее в уроке "Посимвольный ввод и вывод"). - Если очередной символ - это переход на новую строку, то увеличиваем значение переменной, хранящей количество строк.
- Иначе - увеличиваем счетчик символов.
- Для подсчета слов используем специальную переменную-флаг, отрицательное значение которой обозначает нахождение вне слова (когда вводятся пробелы, символы перехода на новую строку, не начат ввод слова).
- Если вводится пробел или символ перехода на новую строку, значит ввод слова был окончен, и следует сбросить флаг.
- Иначе (когда вводится любой другой символ) если флаг сброшен, то начинается ввод нового слова. Значит, надо увеличить счетчик слов и установить флаг, чтобы сигнализировать о нахождении внутри слова.
#include <stdio.h> int main() { char ch, flag = -1; unsigned c = 0; // символы unsigned w = 0; // слова unsigned n = 0; // строки while ((ch = getchar()) != EOF) { if (ch == '\n') n++; else c++; if (ch == ' ' || ch == '\n') flag = -1; else if (flag == -1) { flag = 1; w++; } } printf("Символы: %u\n", c); printf(" Слова: %u\n", w); printf(" Строки: %u\n", n); }
one two three four Символы: 16 Слова: 4 Строки: 3