#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(即不增加'word')。 – 2014-10-31 21:50:29
這是因爲你編寫了'if(ch ==''...)word ++;'。你讀的每個空間都會增加字數。 – 2014-10-31 21:52:23
這一行:while((ch = getchar())!= EOF)將失敗,因爲ch被定義爲一個char並且EOF是一個比char更長的int,所以比較總是會導致false,所以循環永遠不會退出。 – user3629249 2014-11-01 02:29:29