标题:[求助]EOF与getchar()的问题
取消只看楼主
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
 问题点数:0 回复次数:6 
[求助]EOF与getchar()的问题

源程序如下:

#include<stdio.h>

void main()
{
long nc;
nc=0;
while(getchar()!=EOF)
++nc;
printf("%ld\n",nc);
}
为什么这个程序在vc++6.0下通过调试,但没有运行结果,输入后没反应

请教一下各位高人

搜索更多相关主题的帖子: EOF getchar void main 
2006-07-27 22:18
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
得分:0 
[CODE][CODE]

这个程序如果用for循环实现

#include<stdio.h>

void main()

{

long c;

for(nc=0;getchar()!=EOF;++nc)

printf("%ld\n",nc);

}

运行结果如下:

此时在按回车数字会继续增加,为什么?

请指教

[IMG]C:\未命名[/IMG]


2006-07-27 22:46
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
得分:0 
这个程序是用与对字符进行记数的

2006-07-27 22:48
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
得分:0 

谢谢大家!

我还想请问一下下面这个问题


#include<stdio.h>


void main()


{


long c,nc;


for(nc=0;c=getchar()!=EOF;++nc)


printf("%ld\n",nc);


}

这个程序在vc++6.0下的运行结果是这样的:

譬如输入asdfghjkl

输出结果为:

0

1

2

3

4

5

6

7

8

9

如果此时在按回车键每按一次数字就会加1会出现下面是每按一次回车的结果

10

11

12

.......

这有是为什么?请大家在解答一下


2006-07-28 14:12
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
得分:0 

在请教一下soft_wind

我的循环条件是(c=getchar())!=EOF,如果我在输入结束后按下回车键,输出结果和上面的一样但此时我按

Ctrl+z(EOF=),屏幕出现Press any key to continue循环看来是结束了(运行试试按Ctrl+F5,环境为vc++6.0)

但我输入结束后直接按Ctrl+z,循环按道理应该结束了,但我稀释再按回车,就会出现和12楼一样的情况

这又是为什么?谢谢


2006-07-28 14:47
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
得分:0 

(c=getchar())!=EOF作为循环条件,按Ctrl+z应该会使循环结束,但我输入结束后,按Ctrl+z

屏幕上会显示~Z的字样,要看到结果再按一下回车,但结果和12楼的一样,循环似乎没结束

谢谢


2006-07-28 15:03
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
得分:0 
谢谢

2006-07-29 09:21



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




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

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