使用scanf语句输入字符或在for循环中使用scanf语句输入字符时语句不执行问题 |
您所在的位置:网站首页 › c语言中输入字符串用什么字母 › 使用scanf语句输入字符或在for循环中使用scanf语句输入字符时语句不执行问题 |
问题描述: 在下述程序中,分别向字符数组q键入字符,程序会自动跳过部分scanf,输入错误。 #include char q[3]; void main() { for (int i = 0; i < 3; i++){ scanf("%c", &q[i]); } } 问题原因: 第一次输入时,末尾的回车或空格键被保留在了缓冲区,下次输入时,缓冲区内的回车或空格就被自动地赋到字符数组中,因此scanf就被跳过了。 解决办法: 在scanf语句的前面加上“getchar ();”,清除缓冲区中的字符。 其实在scanf后面加上“getchar ();”也可以,只不过这样有可能在第一次执行循环语句时,没有清除缓冲区,导致第一次scanf被跳过。 因此推荐将“getchar ();”加在scanf语句前面。 #include char q[3]; void main() { for (int i = 0; i < 3; i++){ getchar (); scanf("%c", &q[i]); } } |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |