首页 > 解决方案 > 如何在计数中包含文件的最后一个单词

问题描述

我写了一个简单的程序,它将计算文件中每个单词的长度:

length = 0;

while ((c = getchar()) != EOF){
    ++ length;
    if (c == ' ' || c == '\n' || c == '\t'){
        -- length;
        printf("length of last word: %d\n", length);
        length = 0;
    }
}

现在它确实做到了,直到它到达最后一个词。我理解它为什么这样做,因为它只会在达到某种形式的空白时计算一个单词,而在最后一个单词之后没有任何空白。所以我想知道让这段代码在文件中包含最后一个单词的方法是什么?

标签: c

解决方案


一种方法是在循环完成后打印最后一个单词的长度。

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;
    }
}

顺便说一句,不是length在块中增加然后减少它,而是if简单地将增量移动到一个else块中。或者只是打印length-1

并且在变量和变量之间放置一个空格是不习惯++/--的。


推荐阅读