| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 801 人关注过本帖
标题:getchar()问题
只看楼主 加入收藏
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
收藏
 问题点数:0 回复次数:8 
getchar()问题

为什么在while(1)中getchar()可以接受字符串?望高手指点。。
#include<stdio.h>
main()
{
char c;
while(1)
{
c=getchar();
printf("%c",c);
}

}

搜索更多相关主题的帖子: getchar 
2007-11-18 16:48
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
一直循环啊

上善若水,水善利万物而不争,处众人之所恶
2007-11-18 17:02
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
收藏
得分:0 

在一次循环中就输出c,为什么没有截断字符串而将整串字符输出来?

2007-11-18 17:09
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
其实是接收一个字符,只是有循环,所以一直在接收.

倚天照海花无数,流水高山心自知。
2007-11-18 17:13
learnerboy
Rank: 2
等 级:论坛游民
帖 子:246
专家分:22
注 册:2007-11-11
收藏
得分:0 
那输出的好像不是字符串吧,如果你在printf("%c\t",c);你看看是不是了!!你没有写格式符所以它输出来就像是个字符串一样!
2007-11-18 17:16
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
收藏
得分:0 
以下是引用nuciewth在2007-11-18 17:13:00的发言:
其实是接收一个字符,只是有循环,所以一直在接收.

接收的时候循环起作用吗?程序是读取所有字符串然后一次输出的啊。那个printf为什么可以输出字符串,不是%c吗?迷惑中。

2007-11-18 17:17
xDevil
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-8-31
收藏
得分:0 
以下是引用learnerboy在2007-11-18 17:16:52的发言:
那输出的好像不是字符串吧,如果你在printf("%c\t",c);你看看是不是了!!你没有写格式符所以它输出来就像是个字符串一样!

明白了。
在第一次getchar()时,数据存入缓冲区中,然后输出一个字符。
继续循环,但缓冲区还有数据,然后继续输出字符,直到缓冲区中的数据输出完毕。
继续循环,可以getchar()了.
include<stdio.h>
main()
{
char c;
while(1)
{
c=getchar();
printf("#");//sign!
printf("%c",c);
}

}

[此贴子已经被作者于2007-11-18 17:38:45编辑过]

2007-11-18 17:35
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用xDevil在2007-11-18 17:17:12的发言:

接收的时候循环起作用吗?程序是读取所有字符串然后一次输出的啊。那个printf为什么可以输出字符串,不是%c吗?迷惑中。

它是接收一个字符就立马输出,再更新再输出.


倚天照海花无数,流水高山心自知。
2007-11-18 22:50
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用xDevil在2007-11-18 16:48:57的发言:

为什么在while(1)中getchar()可以接受字符串?望高手指点。。
#include<stdio.h>
main()
{
char c;
while(1)
{
c=getchar();
printf("%c",c);
}

}



// 输出一行:因为输入后需要按回车确认输入。(比较简单的说法)//

系统把输入的字符放在缓冲区中,按回车就刷新缓冲区,
这个也有助于输入确认,方便修改输入。
标准IO函数都使用缓冲区,当缓冲区满或按回车时刷新缓冲区。


—>〉Sun〈<—
2007-11-18 22:58
快速回复:getchar()问题
数据加载中...
 
   



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

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