鱼C论坛

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

while循环问题

[复制链接]
发表于 2016-2-9 10:42:57 | 显示全部楼层 |阅读模式
5鱼币
  1. #include <stdio.h>

  2. int main(){
  3.         int line;
  4.         char c;
  5.         line = 0;
  6.         while((c = getchar()) != EOF){
  7.                 if(c == '\n'){
  8.                         line++;
  9.                 }
  10.         }
  11.         printf("%d",line);
  12.         return 0;
  13. }
复制代码




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

最佳答案

查看完整内容

EOF 是键盘上的 Ctrl + Z
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-9 10:42:58 | 显示全部楼层
360反馈意见截图16880430104108101.png
EOF 是键盘上的 Ctrl + Z
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

谢啦~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

应该用 int 来接收 getchar() 的返回值,而不是 char。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

恩,刚刚看了一下,gethar()的返回值是int型,不是char型,(⊙﹏⊙)b,这名字误导我了;;
谢谢甲鱼老师!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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