gpt4 book ai didi

c - 为什么 switch 无法捕获 EOF(使用 getchar())?

转载 作者:行者123 更新时间:2023-11-30 15:03:51 25 4
gpt4 key购买 nike

#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com