您的位置:首页 > 其它

字符输入,输出问题

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后,再空格或者回车,他就会把空格或者回车赋给第二个字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: