我写了这个简单的程序,将计算文件中每个单词的长度:
length = 0;
while ((c = getchar()) != EOF){
++ length;
if (c == ' ' || c == '\n' || c == '\t'){
-- length;
printf("length of last word: %d\n", length);
length = 0;
}
}
现在正是这么做的,直到它到达的最后一个字。我明白为什么这样做,因为它只会在达到某种形式的空白,同时也没有最后一个字后的任何空白算一个字。所以我不知道会是一个什么办法让这段代码包括最后一个字的文件中?
一种方法是打印的最后一个字的长度循环完成后。
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
。
它不是习惯把++/--
和变量之间的空间。