Я искал, но не нашел решения. Предполагается, что программа считает табуляции, переводы строк и пробелы.
#include <stdio.h>
int main(void)
{
int c,nl,tab,blank;
tab = 0;
blank = 0;
nl = 0;
while((c = getchar()) != EOF)
{
if(c == '\n');
nl++;
if(c == '\t');
tab++;
if(c == ' ');
blank++;
}
printf("newline: %d tab: %d blank: %d\n", nl,tab,blank);
return 0;
}
Когда я запускаю это на FreeBSD, используя ctrl-d для сигнала EOF, каждая переменная отображается с одним и тем же значением. Если я наберу "helloпусто, каквкладкавводитевывводитеctrl-d " он отображает новую строку как 18, вкладку как 18, пустую как 18.
Мой код неправильный? Очевидно, что да, но что не так?
if(c == '\n');
->if(c == '\n')
. (Кроме того, это не ошибка как таковая, но научитесь правильно форматировать свой код.) - person Paul R   schedule 24.05.2017-Wall
обнаружила бы эту проблему. - person M.M   schedule 24.05.2017