Нужно посчитать количество строк и табуляций - C (СИ)
Формулировка задачи:
Привет. Нужна помощь. Спрашивать не у кого, пишу с элементерными вопросами сюда, сорри. Нужно посчитать кол-во строк и табуляций. Все компилируется, но не считает (по крайней мере не выводит на экран) второй показатель - выдает всегда ноль. Первый (кол-во строк) считает. По отдельности программы работают и считают. Спасибо.
#include <stdio.h>
main()
{
int nl, c, nt, t;
nl = 0; nt = 0;
while ((c = getchar()) != EOF)
if (c == '\n')
++nl;
while ((t = getchar()) != EOF)
if (t == '\t')
++nt;
printf("%d %d\n",nl,nt);
}Решение задачи: «Нужно посчитать количество строк и табуляций»
textual
Листинг программы
//Подсчет пробелов, табуляций и новых строк
#include<stdio.h>
#define EOF '^'
int main()
{
int np=0,nt=0,nn=0;
char c;
while((c=getchar())!=EOF){
if(c==' ') ++np;
else if(c=='\t') ++nt;
else if(c=='\n') ++nn;
}
printf("%d\t%d\t%d\n",np,nt,nn);
return 0;
}
Объяснение кода листинга программы
В этом коде происходит подсчет количества пробелов, табуляций и новых строк в тексте.
- #include
— подключаем стандартную библиотеку для ввода-вывода. - #define EOF '^' — определяем константу EOF, которая будет использоваться для обозначения конца файла.
- int main() — функция main() является точкой входа в программу.
- char c; — объявляем переменную типа char для хранения символа.
- while((c=getchar())!=EOF) — выполняем цикл while, который будет выполняться до тех пор, пока не будет достигнут конец файла. Внутри цикла получаем символ с помощью функции getchar() и присваиваем его переменной c.
- if(c==' ') ++np; — если символ равен пробелу, увеличиваем значение переменной np на 1.
- else if(c=='\t') ++nt; — если символ равен табуляции, увеличиваем значение переменной nt на 1.
- else if(c=='\n') ++nn; — если символ равен новой строке, увеличиваем значение переменной nn на 1.
- printf(
%d\t%d\t%d\n,np,nt,nn); — выводим результаты подсчета на экран. - return 0; — завершаем работу программы.