标题:混合字符和数值输入
只看楼主
破碎的石头
Rank: 2
等 级:论坛游民
帖 子:71
专家分:13
注 册:2012-12-11
得分:0 
回复 29楼 TonyDeng
我这样理解对不对:ch=getchar();读入第一个字符,同时剩下的字符(包括\n)都存在缓存里面,while(getchra()!='\n')把除了换行符以外的字符全部抛弃(包括第一个字符),这样返回ch,而ch=第一个字符,之前读入的。
2012-12-11 23:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
连'\n'也抛弃了的,因为在结束循环的时候,就是getchar()读入了一个'\n'才引起结束,这个'\n'也被抛弃了的。ch是一开始读入时储存起来留作后面返回的,它已经被另外保存了。

授人以渔,不授人以鱼。
2012-12-11 23:11
破碎的石头
Rank: 2
等 级:论坛游民
帖 子:71
专家分:13
注 册:2012-12-11
得分:0 
回复 32楼 TonyDeng
那第一个字符在while()中用不用在出现一次?
2012-12-11 23:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
不用。你要知道,输入缓冲区就如水龙头,数据有如水滴,你读一滴,下一滴就接过来让你下一次getchar()来读。所以一开始的ch = getchar()已经把第一滴水接走放在杯子里了,然后不断地接下一滴水,但不储存,倒掉,直到读到'\n'这滴之后,就不再读了,然后把刚才杯子里的ch水滴返回出去。

授人以渔,不授人以鱼。
2012-12-11 23:15
破碎的石头
Rank: 2
等 级:论坛游民
帖 子:71
专家分:13
注 册:2012-12-11
得分:0 
回复 34楼 TonyDeng
大谢。谢谢大神不厌其烦的回答。谢谢。晚安。搞懂问题才睡得觉
2012-12-11 23:18



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




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

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