#include "stdio.h"
int main() {
int wordsAmount = 0;
for(int c = 0, inWord = 0; ((c = getchar()) != EOF) ;) {
switch(c) {
case '\t' : inWord = 0; break;
case '\n' : inWord = 0; break;
case ' ' : inWord = 0; break;
case EOF : printf("\nwords amount: %d\n", wordsAmount); return 0;
default : if(inWord == 0) { wordsAmount++; inWord = 1; }
}
}
return 1;
}
这必须计算字数,但它不起作用。
是的,如果将 EOF case body 从循环中移出,它应该可以工作,但是如何使其在 switch
中工作?
最佳答案
正如 BLUEPIXY 在评论部分中提到的,由于 ((c = getchar()) != EOF) for 循环条件将在 EOF 处失败,因此控制不会进入 for 循环内部。
关于c - 为什么 switch 无法捕获 EOF(使用 getchar())?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40520529/