如何在文件中包含文件的最后一个字

时间:2019-02-04 17:31:58

标签: c

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

length = 0;

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

现在,它会精确地执行到到达最后一个单词为止。 我理解为什么这样做,因为它只会在到达某种形式的空白时才计算一个字,而最后一个字之后没有任何空白。 因此,我想知道如何使这段代码在文件中包含最后一个单词?

1 个答案:

答案 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

++/--和变量之间留一个空格并不是惯常做法。