проблема с вашим кодом - if(character == (' ' || '\n' || '\t'))
оператор.Выражение (' ' || '\n' || '\t')
эквивалентно 32 || 13 || 9
(каждый символ заменяется на его эквивалентное значение ASCII), что равно 1
, поскольку любая ненулевая вещь считается true
в C / C ++, поэтому эффективно вы делаете if(character == 1)
.Теперь я думаю, что вы можете исправить эту проблему в своем коде.
Также книги говорят, что нужно подсчитывать пробелы, табуляции и новые строки по отдельности, и вы пытаетесь подсчитать общее число, поэтому сделайте что-то вроде этого.1010 *
Если вы хотите законченное решение, вот то, которое я написал давно.
#include <stdio.h>
int main(void)
{
int blanks, tabs, newlines;
int c;
blanks = 0;
tabs = 0;
newlines = 0;
do {
c = getchar();
if(c == ' ') {
++blanks;
}
else if(c == '\t') {
++tabs;
}
else if(c == '\n') {
++newlines;
}
}
while(c != EOF)
printf("Blanks: %d\nTabs: %d\nLines: %d\n", blanks, tabs, newlines);
return 0;
}