C语言中用scanf("%c",&ch);程序会出错,如果scanf(" %c",&ch);在%c前面加个空格就是正常运行

或者不加空格
fflush(stdin);
scanf("%c",&ch);
加fflush(stdin);这个语句也是可以正常运行,求大神解释一下 fflush(stdin); 和加空格 是什么意思

清空输入缓冲区。
如果经常出现情况这种的话,第一次输入的回车可能会被第二次输入操作所捕捉,这个的作用就是清空缓冲,这样就不会出现这种情况了。
控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白符使 scanf() 在输入流中读,但不保存结果,直到发现非空白字符为止。
这是百度里关于fflush(stdin)的说明:

http://baike.baidu.com/link?url=ArRVBbbx-82XXxPyMZTh2bu_YIAWdwR9s06FeUIv7th9rDenCeqNxsybFI2SwDir46dZljOiGAt1CR8uTJUESq

SCANF的用法:

http://wenku.baidu.com/link?url=bT8Dg6zhA_r094Htf4pLwr25kdOb3bD8-64r5O3qz7uIb4vpYwtdnmAKAN_RefFziTaXldI7hqNbNF0lk-q0qv334OX7tLggXJ5BbpLYABu追问

对的,如果不加空白符,或者fflush(stdin),那么scanf就要输两道程序才会继续运行,但是从程序上看是开会输两道的,难道第一道输入的数,没有被读出来嘛

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网