标题:大一新生求助
只看楼主
a3503858399
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-2-19
结帖率:0
已结贴  问题点数:20 回复次数:8 
大一新生求助
这是一个输入字母成绩,统计有多少个的程序输入EOF退出,但是输入EOF退出不来

搜索更多相关主题的帖子: 大一新生 输入 多少 EOF 退出 
2018-02-19 20:17
a3503858399
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-2-19
得分:0 
大佬们啊,快出来啊
2018-02-19 20:37
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:4 
ctrl+z
2018-02-19 20:54
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
得分:4 


EOF是一个宏定义,不是一个可输入字符,它的值为-1.

getchar()执行一次只读入一个字符,对于你输入的EOF来说是三个字符,getchar()要执行三次才会完全读入.所以你的代码不可能停下来的.

想停下来可以换种方式,比如说输入ctrl+z, 或者监视键盘,键盘输入某控制字符的时候停止,或者多久键盘没动作就停止等等.

代码测试环境:  WinXP+C-Free5.0.
2018-02-20 12:24
木下瞳
Rank: 1
等 级:新手上路
帖 子:37
专家分:6
注 册:2017-9-24
得分:4 
while(scanf("%d",&grade) != EOF)
你grade是整形,不是字符
2018-02-20 17:00
cherreggy
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2018-2-22
得分:4 
楼主好,希望这些建议能给你帮助。getchar不能读取三个字符,只能读取第一个。而且字符外面要加上''。在DEV C++可以试试最后按Ctrl+Z+Enter。如果你想输入的是字符串结束的话及建议你用数组,字符串比较大小函数strcmp(这个在之后才会学到)。现在咱们所学的顺序选择循环还做不到。你可以改成以按回车键结束((grade=getchar())!='\n')。可以多看一下每个函数的用法和注意事项。

[此贴子已经被作者于2018-2-24 13:48编辑过]

2018-02-24 13:38
马尔代夫人
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2018-2-25
得分:4 
定义一个string字符串 string s="EOF";然后判断就行了
2018-02-25 15:28
a3503858399
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-2-19
得分:0 
回复 6楼 cherreggy
谢谢
2018-02-26 19:06
a3503858399
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-2-19
得分:0 
感谢各位大佬
2018-02-26 19:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484791-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.138787 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved