标题:有详细了解我遇到的问题吗?麻烦讲解一下,谢哈。
只看楼主
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
得分:0 
好吧,我发现了scanf还有这个属性:
1. 读取的缓冲区里,读取类型前面的所有空白符会被抛弃,包括回车符。

以及忘记了一条重要的属性:
2. scanf读取会遇空白符则结束,但不会读走空白符(回车符一样)。注:读取数据为字符型除外。

因此我的程序在循环中,第二个scanf读取的第一个是%c,则让程序误认为那个回车符属于输入数据而读写到 char a 中,至于读取%d时,虽然依然在每次循环里scanf都会产生一个漏掉的回车符,不过在下一论scanf的时候会被读走并抛弃。

[此贴子已经被作者于2018-1-16 18:18编辑过]

2018-01-16 18:00
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
我这里是这样的。
2018-01-16 18:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用kin3z在2018-1-16 17:09:37的发言:

但按照scanf保留空白符没读走的说法,以下代码却是正确的(唯一区别就是把a的char类型改回int类型,那个多出的空白字符就消失了)
所以困惑我的是为啥int处理没产生空白符而char的读会出现读漏的空白符。

参考2楼
2018-01-16 19:13



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




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

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