中易网

C语言缓冲区的问题

答案:2  悬赏:80  
解决时间 2021-02-06 12:17
例如getchar()我输入了两个字符A,B和[Enter],那么在getchar()后面还有一个getchar()
像这样:
getchar();
getchar();
那么第二次的getchar()提取的是B还是Enter。为什么
最佳答案
第一次获取是A的ACSSI值是65,第二次获取的是B的ACSSI值是66,getchar函数只是取单个字符,所以两次取的是A和B的acssi值,至于enter是为了回车换行而已,刷新缓存区
全部回答
输出缓冲区: c标准规定fflush()函数实现,用来刷新输出(stdout)缓存的,对于(stdin)是么有意义的,gcc也不能使用fflush(stdin)来刷新,因为gcc么实现它。 那么为什么要刷新呢,个人认为是这样的 打个比方getchar()函数,我们知道他是从界面读取用户输入的字符,读取之后编译器就把它放在缓存中,当达到一定值的时候,才写入文件什么的,或者我们自己主动调用函数写进去,这个时候如果你还要读取字符到另一个文件中,你会发现这个时候不是你要写入文件的字符,这个时候你就应该刷新下缓存。 打个比较典型的比方: char p[]={“a”,“b”,“c”}; printf("%d",strlen(p)); 我们发现输出的数值不是我们想象的3,为什么,这就是缓存的问题,因为数组p的结束符不是‘/0’,系统会从缓存里面一直读,根据我的理解如果先刷新下缓存,应该就是3了 对于lz的例子我觉得好像么什么问题,如果要加刷新缓冲,那我觉得可能是,你sleep(1)的时候,其他程序开始占用cpu,导致缓存发生变化,导致输出不正常 刷新缓存在tcp和udp通讯的时候用的很多,lz可以看看这方面资料。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
母亲心脏疼痛,心电图彩超等查不出原因,但频
射手男水瓶女分手三个月,水瓶女多次挽留无果,
张家湾地址在哪,我要去那里办事
浙江嘉兴金库KTV男模几百的
京au8533车主是谁
宠物养护与训导和动物医学能一起学吗
源香缘-古早味手工蛋糕(花园路丹尼斯店)地址
女性脑后头皮很虚,一按一个坑,是怎么回事?
天天酷跑觉醒流星狮爷厉害吗
求《相思入骨君知否》苏落和殷辰的完结小说资
求数例1.3.5.7.的第20项
东莞育才职业技术学校好吗
焦村镇敬老院在哪里啊,我有事要去这个地方
一万元,2012年2月5日存入,定期两年,当时利
在探究“杠杆的平衡条件”实验中,所用的实验
推荐资讯
魔兽世界国服主城BOSS排名
30岁用什么品牌面膜好
用一句委婉的话说谁用了我的东西会怎么说
写景作文总分总300字
淘宝退款卖家备注保证金转移什么意思,能提现
专家进来:粮库房顶可用于光伏发电吗
双色球一个号码没中有钱吗
请问一下。孩子超过七岁可以上一年级吗
会声会影的音乐音量不能调小
毛记嘴嘴香太和店地址有知道的么?有点事想过
智新汽车电子地址在哪,我要去那里办事
电脑系统,就是说 原先电脑桌面是 安装有什么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?