| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1399 人关注过本帖
标题:求助!关于getchar()!请知道的帮忙解释下
只看楼主 加入收藏
raindgy
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2009-10-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
求助!关于getchar()!请知道的帮忙解释下
getchar():我在书上看到的时候说只能接受一个字符,但是后来遇到的一个例题里面却“好像”接受了一串的字符,我有点不明白了,希望高手可以解释一下,我把例子发上来
---------------------------------------------------------------------
例题·1:

char c;
c=getchar();
printf("%c",c);
我输入C,显示C。我输入CHINA,也是现实C。

例题·2:

char c;
while((c=getchar())!='\n')
 {
  if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
   {
    c=c+4;
    if(c>'Z'&&c<'Z'+4||c>'z')
     c=c-26;
   }
  printf("%c",c);
 }
printf("\n");
--------------------------------------------------------------------------
这个题目的意思是:编译密码,ABCDEF``````XYZ 这26个字母,就是把你输入的字母的ASCII代码+4位转换成新的字母,比如A->E,B->F

(我这里输入CHINA,显示的是GLMRE){/*我就郁闷了,上面的例题怎么CHINA用getchar就只显示C,而这里的CHINA同样用的是getchar但是却有5个显示出来,不是说只接受一个字符的吗?例题2给我的感觉好像能接受字符串*/}      
搜索更多相关主题的帖子: 解释 getchar 
2009-10-09 22:14
raindgy
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2009-10-9
收藏
得分:0 
自己回复一个,代表我在关注这个论坛

小猪
2009-10-09 22:17
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:10 
while((c=getchar())!='\n')
关键问题是字符的获得是在一个while循环语句里,你虽然每次只能从外界获得一个字符,但是每次输入一个字符后,如果仍然满足条件,即次字符不是\n,那么while循环就不停止,继续让你从外界给它输入字符。而且它仍然是每次接受一个字符。只不过它每次接受完后要做出判断,满足条件再继续。
2009-10-09 22:21
raindgy
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2009-10-9
收藏
得分:0 
回复 3楼 m456m654
我的CHINA是一次性输入,然后按回车的

小猪
2009-10-09 22:23
raindgy
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2009-10-9
收藏
得分:0 
以下是引用m456m654在2009-10-9 22:21:42的发言:

while((c=getchar())!='\n')
关键问题是字符的获得是在一个while循环语句里,你虽然每次只能从外界获得一个字符,但是每次输入一个字符后,如果仍然满足条件,即次字符不是\n,那么while循环就不停止,继续让你从外 ...
我的CHINA是一次性输入的,打完了按ENTER的

小猪
2009-10-09 22:24
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:10 
可以这样理解:
你输入的所有的字符都存到stdin这个流中去了,可以把它理解为一个文件,
在前面的例子中,你getchar只是在这个文件中去一个字符,那么得到的C

而在后面的例子中,你每次都会去stdin去读一个字符,知道为'\n'为止,那么就可以
读出很多字符出来。



要练习算法就来http:///!!有挑战哦!!
2009-10-09 22:26
raindgy
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2009-10-9
收藏
得分:0 
回复 6楼 viky2003
理解了···
第一次来这个论坛求助
大伙都好热情
谢谢了
这个地方不错,问题解决好即时啊
不把这个网站收藏不行啊

小猪
2009-10-09 22:30
raindgy
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2009-10-9
收藏
得分:0 
回复 3楼 m456m654
谢谢

小猪
2009-10-09 22:30
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
回复 5楼 raindgy
我明白你的意思。
在你输入的第一个字符C后,你的while循环会检测这个字符是否满足条件,发现C满足条件,while继续,第二个字符H也有效。以此类推。
你虽然是一次性输入CHINA,但是你不要理解成:getchar()接受的是一个字符,然后把后面的HINA都视为无效。
不能这么理解。
CHINA虽然是一次性整体进去的,但不是说必须对他们5个字符同时做一次性处理。你可以参考一下楼上的解释。
当C被处理的时候,后面的四个字符在等待电脑的处理,每次处理一个。
2009-10-09 22:35
爱乐飞
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2009-7-21
收藏
得分:0 
我也学习了!
2009-10-09 22:47
快速回复:求助!关于getchar()!请知道的帮忙解释下
数据加载中...
 
   



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

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