| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2090 人关注过本帖
标题:有详细了解我遇到的问题吗?麻烦讲解一下,谢哈。
只看楼主 加入收藏
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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用kin3z在2018-1-16 17:09:37的发言:

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

参考2楼
2018-01-16 19:13
快速回复:有详细了解我遇到的问题吗?麻烦讲解一下,谢哈。
数据加载中...
 
   



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

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