鱼C论坛

 找回密码
 立即注册
查看: 1357|回复: 5

while循环问题

[复制链接]
发表于 2016-2-9 10:42:57 | 显示全部楼层 |阅读模式
5鱼币
#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里调试的。

最佳答案

查看完整内容

EOF 是键盘上的 Ctrl + Z
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-9 10:42:58 | 显示全部楼层
360反馈意见截图16880430104108101.png
EOF 是键盘上的 Ctrl + Z
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-9 12:13:18 | 显示全部楼层
getch返回值是用户输入的ASCII码,而EOF是宏定义为-1,没有ASCII码为-1,所以这个相当于死循环。EOF一般用来判断文本文件的结束用的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-9 16:27:49 | 显示全部楼层
人造人 发表于 2016-2-9 10:42
EOF 是键盘上的 Ctrl + Z

谢啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-9 16:28:44 | 显示全部楼层

应该用 int 来接收 getchar() 的返回值,而不是 char。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-10 18:16:57 | 显示全部楼层
小甲鱼 发表于 2016-2-9 16:28
应该用 int 来接收 getchar() 的返回值,而不是 char。

恩,刚刚看了一下,gethar()的返回值是int型,不是char型,(⊙﹏⊙)b,这名字误导我了;;
谢谢甲鱼老师!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 18:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表