| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 967 人关注过本帖
标题:关于getchar()与EOF的问题(缓存好像无限)。(本人学C没多久)
只看楼主 加入收藏
懒惰星
Rank: 1
来 自:江西上饶
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-3-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
关于getchar()与EOF的问题(缓存好像无限)。(本人学C没多久)

#include <stdio.h>
main()
{
int c,i,n;
while((c=getchar())!=EOF)
     putchar(c);/* 循环只有这一句*/
getchar();/*为什么吸收不了缓存中的数据?*/
i=getchar();/*本来想输h的*/
n=getchar();/*想输j的,可是好像缓存中有N个-1(EOF)一样前面两个都没吸收掉*/
printf("\nc=%d\ni=%d\nn=%d\n",c,i,n);
}
输入:aaa(ctrl+z)
输出:aaa c=-1  i=-1  n=-1
为什么直接得到i和n等于-1呢?而不等我输入呢?

[ 本帖最后由 懒惰星 于 2011-3-27 12:57 编辑 ]
搜索更多相关主题的帖子: include 
2011-03-27 11:15
懒惰星
Rank: 1
来 自:江西上饶
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-3-3
收藏
得分:0 
各位大侠帮帮我!感激不尽!!先谢啦!

懒惰的我学习C
2011-03-27 11:16
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:5 
程序代码:
#include <stdio.h>
main()
{
int c,i,n;
while((c=getchar())!=EOF)
{
      putchar(c);
//getchar();//多余
i=getchar();
n=getchar();
getchar();//容纳Enter
printf("\nc=%d\ni=%d\nn=%d\n",c,i,n);
}
}
输入:aaa
输出:a
      c=97
      i=97
      n=97
2011-03-27 11:36
懒惰星
Rank: 1
来 自:江西上饶
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-3-3
收藏
得分:0 
回复 3楼 LSYHEFENG
我是想给i输‘h’,n输‘j’.i和n不在循环中

懒惰的我学习C
2011-03-27 11:46
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
i,n不在循环体中,就似乎没机会执行
你把题目要求说说看
2011-03-27 11:54
懒惰星
Rank: 1
来 自:江西上饶
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-3-3
收藏
得分:0 
回复 5楼 LSYHEFENG
再看看

懒惰的我学习C
2011-03-27 12:06
禾才程
Rank: 2
等 级:论坛游民
帖 子:18
专家分:55
注 册:2010-12-11
收藏
得分:5 
#include "stdio.h"
#include "conio.h"


main()
{
int c,i,n;
while((c=getchar())!=EOF)
      putchar(c);
getchar();
i=getche();
n=getche();
printf("\nc=%d\ni=%d\nn=%d\n",c,i,n);
getch();
}
输入:aaa(ctrl+z)aa试试
(ctrl+z)之后的两个字符也就是i,j连续输入,不要加回车
2011-03-27 12:15
禾才程
Rank: 2
等 级:论坛游民
帖 子:18
专家分:55
注 册:2010-12-11
收藏
得分:0 
(ctrl+z)之后的两个字符是i,n,其实你这个问题是跟getchar()的特性有关,它是会自动读取字符流利的字符,用getche()读取一个字符就会自动执行下一条语句
2011-03-27 12:17
禾才程
Rank: 2
等 级:论坛游民
帖 子:18
专家分:55
注 册:2010-12-11
收藏
得分:0 
哎,又打错了,输入顺序是这样aaa(ctrl+z)回车再输入i、n的两个字符,中间不加回车
2011-03-27 12:21
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
getchar()只是返回一个字符给调用者,这是getchar的唯一作用。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-27 12:21
快速回复:关于getchar()与EOF的问题(缓存好像无限)。(本人学C没多久)
数据加载中...
 
   



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

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