倾天 发表于 2016-2-9 10:42:57

while循环问题

#include <stdio.h>

int main(){
        int line;
        char c;
        line = 0;
        while((c = getchar()) != EOF){
                if(c == '\n'){
                        line++;
                }
        }
        printf("%d",line);
        return 0;
}



就是这段代码,while循环出不来,执行不到printf,这是为什么?求解。
是在VC里调试的。

人造人 发表于 2016-2-9 10:42:58


EOF 是键盘上的 Ctrl + Z

_crazy 发表于 2016-2-9 12:13:18

getch返回值是用户输入的ASCII码,而EOF是宏定义为-1,没有ASCII码为-1,所以这个相当于死循环。EOF一般用来判断文本文件的结束用的。

倾天 发表于 2016-2-9 16:27:49

人造人 发表于 2016-2-9 10:42
EOF 是键盘上的 Ctrl + Z

谢啦~

小甲鱼 发表于 2016-2-9 16:28:44

倾天 发表于 2016-2-9 16:27
谢啦~

应该用 int 来接收 getchar() 的返回值,而不是 char。

倾天 发表于 2016-2-10 18:16:57

小甲鱼 发表于 2016-2-9 16:28
应该用 int 来接收 getchar() 的返回值,而不是 char。

恩,刚刚看了一下,gethar()的返回值是int型,不是char型,(⊙﹏⊙)b,这名字误导我了;;
谢谢甲鱼老师!
页: [1]
查看完整版本: while循环问题