版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/XGL1569348/article/details/68488965
问题就是,scanf获取了自己的要的东西之后,就关闭了输入流,’\n’就占据了流的第一位,下次再调用scanf的时候,再次打开输入流,第一个符合条件进来的是’\n’ 就读了走人再关闭流。就会导致一次输入两次运行。
使用
scanf(" %c",...)
,效果为读掉多余的空格换行TAB符。使用
scanf("%c%*c",.....)
增加一个%*c。%*c可以抛弃一个输入的量,在这里面,可以把\n给接受并抛弃。下一行使用
getchar()
,将\n读掉。下一行使用
fflush(stdin)
,把输入流里的东西冲掉。
注意输入语句的操作逻辑,回车只不过是一个开启读取console输入内容的开关,直接对流进行操作,获得所要的东西就关闭,不抛弃后面的内容。常规读取语句并不受回车影响,而是将其当做一个普通字符。