字符输入,输出问题
2015-08-12 16:21
120 查看
scanf("%s%c")为何不能输入%c?
2007-11-23 23:03yhy19820816 | 浏览0 次
scanf("%s%c"); 把字符串输完就退出了,为什么他们在一起时,单个字符输不进来?
scanf("%s %c")这样就输进来了,我不太懂,为什么他们组合的时候必须加一个明确的分隔符? scanf("%d%f%d%c")没有分隔符,但输入都是正常的啊. scanf("%c%c")也存在同样的问题,我如果想输入单个字符a和b,必须要在scanf函数里加一个明确的分隔符.我不懂,这到底为什么?请高手指点下.不加为什么不行?
分享到:
2007-11-24 09:41
#高质回答巅峰之战“疯狂攀岩”火热开启!#
提问者采纳
我来说下标准答案吧 首先你写的不规范, 正确应该是这样。 char str[100]; char chr; scanf("%s%c", str,&chr); 可能你只是觉得表达清楚意思就行了。 然后再说为什么会向你说的这样 你输入一个字符串赋值给str,然后按回车或者空格来结束,以输入下一个字符赋值给chr,你知道不,你按空格或者回车也是字符啊,所以它就把你输入的空格或者回车赋给了chr字符了。 空格的AscII码是32,回车好像是13或者20。 明白了不? 如果你中间加一个空格,输入完第一字符串后,按空格,他会按格式赋值,因为scanf("%s %c"); 中间有一个空格,会吸收这个空格,因此会在你输入空格后的下一个字符赋给字符chr。 scanf("%d%f%d%") 像这样的中间的空格或者回车不会被下一个变量吸收,具体你可以看书上的定义 scanf("%c%c")这样的,你输入ab,然后他把a赋给第一个,a赋给第二个,没问题。 但是你输入a后,再空格或者回车,他就会把空格或者回车赋给第二个字符。
相关文章推荐
- C#中的泛型
- SQLite 日期 & 时间
- Linux系统排查4——网络篇
- C++/CLI托管
- 自定义GridView六宫格
- Java FileInputStream/FileOutputStream的应用 文件读取和写入
- 鼠标放到图片上实现动态的效果
- 解决混淆报错问题-打包签名出现问题的解决方法
- 数据结构Java实现01----算法概述
- 关于C#反射(转载)
- ie6-7 overflow:hidden失效问题的解决方法
- 一个看股票的小工具
- IOS开发在线文档 记录下
- android 调用系统出现activity销毁
- 国王的烦恼---nyoj
- DUBBO配置规则详解
- 有关win32信号量和事件在多线程使用的小例子
- Groovy插件安装
- SAS硬盘与SATA硬盘有什么区别
- [置顶] 新浪微博自定义加入csdn