#include <stdlib.h>
#include <stdio.h>
int main()
{
unsigned long c;
unsigned long line;
unsigned long word;
char ch;
c = 0;
line = 0;
word = 0;
while((ch = getchar()) != EOF)
{
C++;
if (ch == '\n')
{
line ++;
}
if (ch == ' ' || ch == '\n' || ch =='\'')
{
word ++;
}
}
printf("%lu %lu %lu\n", c, word, line);
return 0;
}
Моя программа работает отлично по большей части, но когда я добавляю дополнительные пробелы, она учитывает пробелы как дополнительные слова. Так, например, Не считая пробелов как слов в c
How are you?считается 10 словами, но я хочу, чтобы он считался как 3 слова вместо этого. Как я могу изменить свой код, чтобы заставить его работать?
Вы должны изменить свою логику на * not * count (т. Е. Не увеличивать слово '), когда вы видите последовательные пробелы. –
Это потому, что вы закодировали 'if (ch == '' ...) слово ++;'. Каждое прочитанное вами пространство увеличит количество слов. –
Эта строка: while ((ch = getchar())! = EOF) завершится ошибкой, поскольку ch определяется как char, а EOF - это int, длина которого больше, чем char, поэтому сравнение всегда приведет к ложному, поэтому цикл никогда не выйдет. – user3629249