插入空格的目的是什么scanf
像这样
scanf(" %c",&ch)
代替
scanf("%c",&ch)?
还有什么是输入缓冲区fflush(stdin)
?
因为前面的空间%c
忽略所有空白。*scanf
函数族忽略任何之前的所有空格%
默认情况下,除了%c
, %[
and %n
。 C11 中提到了这一点:
7.21.6.2.8
输入空白字符(由 isspace 函数指定)将被跳过,除非
该规范包括 [、c 或 n 说明符。
为了完整起见,以下部分表示所有空白都将被忽略:
7.21.6.2.5
由空白字符组成的指令通过读取输入来执行
第一个非空白字符(保持未读状态),或者直到没有更多字符可以
被阅读。该指令永远不会失败。
关于你的第二个问题,fflush(stdin)
导致未定义的行为,不得使用(强调我的):
7.21.5.2.2
如果流指向输出流或更新流其中最近的
未输入操作,fflush 函数会导致该流出现任何未写入的数据
传送到主机环境写入文件;否则,行为是未定义的.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)