关于getchar()的问题,在线等

mailghyth 2011-05-29 06:13:06
#include <stdio.h>

main()
{
int c;
while (c = getchar() != EOF)
printf("%d\n", c);

printf("%d -at EOF\n", c);
}
以上程序在linux下执行,为何无论输入EOF还算-1都无法从while循环中跳出, 语句printf("%d -at EOF\n", c);永远都无法执行到,难道linux下getchar()的文件结束符不是EOF也不是-1????

在线等,请不吝赐教,谢谢各位
...全文
180 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
如此美丽的你 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zouyuncheng 的回复:]
输入EOF,它会接收一个E,一个O,一个F,输入-1会接收一个-(负号),一个1,,,无论你怎么输入,它都不会接收到"-1"这个值,就算你的EOF就是被定义成-1,那你无论如何输入,也不能让C的值是-1,而CTRL+D在类UNIX环境的终端上被定义为"文件结束标志",也就是EOF,,上面的朋友也说了,CTRL+Z在WIN下的命令行被定义为EOF,这些没什么可纠结的,记住就行了
[/Quote]
++
玩笑 2011-05-30
  • 打赏
  • 举报
回复
输入EOF,它会接收一个E,一个O,一个F,输入-1会接收一个-(负号),一个1,,,无论你怎么输入,它都不会接收到"-1"这个值,就算你的EOF就是被定义成-1,那你无论如何输入,也不能让C的值是-1,而CTRL+D在类UNIX环境的终端上被定义为"文件结束标志",也就是EOF,,上面的朋友也说了,CTRL+Z在WIN下的命令行被定义为EOF,这些没什么可纠结的,记住就行了
AnYidan 2011-05-30
  • 打赏
  • 举报
回复
ctrl+Z 是 window 下的
  • 打赏
  • 举报
回复
到底什么!!!
南气子水 2011-05-30
  • 打赏
  • 举报
回复
END OF FILE 文件结束符
Meteor_Code 2011-05-30
  • 打赏
  • 举报
回复
Ctrl + D会使你的getchar()返回一个值
这个值习惯上被叫做EOF字符
xzz_sam 2011-05-30
  • 打赏
  • 举报
回复
如果我没猜错的话,楼主你输入的是字符串“EOF”和字符串“-1”,真正程序里定义的EOF很可能是-1,或者其他整型值(依赖于具体的实现),程序里的EOF在头文件中被定义成-1,这个-1是个内部值,如果是字节表示也就是(11111111),在输入输出的映射下,键盘输入的整型字符被输入格式化为内部表示值-1,上面有人提到的Ctrl+D或者什么键的组合输入的情况下,其对应的机器内部值就是-1(EOF).
顺便说一次啊,C语言中所有的键盘输入都是单个字符或者字符串。
hzc543806053 2011-05-30
  • 打赏
  • 举报
回复
while ((c = getchar()) != EOF)
mailghyth 2011-05-29
  • 打赏
  • 举报
回复
懂了,谢谢,文件结束符是ctrl+d
楼上的ctrl+Z不行的
jernymy 2011-05-29
  • 打赏
  • 举报
回复

#include <stdio.h>

main()
{
int c;
while ((c = getchar()) != EOF) // jernymy here please input Ctrl+Z, is EOF
printf("%d\n", c);

printf("%d -at EOF\n", c);
}

影游 2011-05-29
  • 打赏
  • 举报
回复
恩,搞错了!
楼主自己看百科吧!
EOF
mailghyth 2011-05-29
  • 打赏
  • 举报
回复
我就是输入的EOF和-1都不行,为什么要输入Ctrl + D才行呢,getchar()的结束符不是EOF吗??奇怪
影游 2011-05-29
  • 打赏
  • 举报
回复
??
EOF(End Of File),在操作系统决定资料源无更多的资料可读取。资料源通常称为档案或串流
这是文件操作吧!
个人意见!
KID_coder 2011-05-29
  • 打赏
  • 举报
回复
Ctrl+D
不是输入EOF
www_adintr_com 2011-05-29
  • 打赏
  • 举报
回复
你不是输入的 EOF 这个字符串吧? 试过输入 Ctrl + D 了没?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧