我编写了一个简单的程序,该程序将计算文件中每个单词的长度:
length = 0;
while ((c = getchar()) != EOF){
++ length;
if (c == ' ' || c == '\n' || c == '\t'){
-- length;
printf("length of last word: %d\n", length);
length = 0;
}
}
现在,它会精确地执行到到达最后一个单词为止。 我理解为什么这样做,因为它只会在到达某种形式的空白时才计算一个字,而最后一个字之后没有任何空白。 因此,我想知道如何使这段代码在文件中包含最后一个单词?
答案 0 :(得分:3)
一种方法是在循环完成后打印最后一个单词的长度。
while ((c = getchar()) != EOF){
++ length;
if (c == ' ' || c == '\n' || c == '\t'){
-- length;
printf("length of last word: %d\n", length);
length = 0;
}
}
if (length > 0) {
printf("length of last word: %d\n", length);
}
另一种方法是更改循环条件并在打印后退出循环。
while (1){
++ length;
if (c == ' ' || c == '\n' || c == '\t' || c == EOF){
-- length;
printf("length of last word: %d\n", length);
length = 0;
}
if (c == EOF) {
break;
}
}
BTW,而不是先递增length
,然后在if
块中递减,只需将增量移到else
块中即可。或仅打印length-1
。
在++/--
和变量之间留一个空格并不是惯常做法。