| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5304 人关注过本帖
标题:使用getchar()读入单个数的方法
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 6楼 rjsp
没有考虑整数溢出了

授人以渔,不授人以鱼。
2013-02-01 17:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 11楼 TonyDeng
没有溢出吧,buf只是暂存最后一个字符,r每次都模除了7,我再看看
2013-02-02 09:36
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
今天刚好做到一个类似的例子,可能对LZ的问题有帮助,下面这个循环程序可以实现输入一个字符串,输出一个字符串,比如输入OK!输出OK!(不是输出OOKK!!)
LZ的要求就是把循环体改一下应该就能实现了
PS.我对这段程序也不太理解,我觉得理应是输出OOKK!!的,不过实际操作输出的是OK!
#include<stdio.h>
void main()
{
    char c;
    for(;(c=getchar())!='\n';)
        putchar(c);
    putchar('\n');
}
2013-02-15 19:23
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
【转】
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了。
实际上是 输入设备->内存缓冲区->程序getchar  
你按的键是放进缓冲区了,然后供程序getchar  
你有没有试过按住很多键然后等一会儿会滴滴滴滴响,就是缓冲区满了,你后头按的键没有存进缓冲区.  
键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到'\n'.要理解这一点,之所以你输入的一系列字符被依次读出来,是因为循环的作用使得反复利用getchar在缓冲区里读取字符,而不是getchar可以读取多个字符,事实上getchar每次只能读取一个字符.如果需要取消'\n'的影响,可以用getchar();来清除,这里getchar();只是取得了'\n'但是并没有赋给任何字符变量,所以不会有影响,相当于清除了这个字符.还要注意的是这里你在键盘上输入ssss看到的回显正是来自于getchar的作用,如果用getch就看不到你输入了什么.
2013-02-15 19:29
快速回复:使用getchar()读入单个数的方法
数据加载中...
 
   



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

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