在正式讲输入函数的垃圾处理,我应该引入一个代码
本来我们想要输入两个东西,然后再输出的,最后发现我输入了一个3,我按了回车键最后直接把这个程序的运行结果直接展现出来了,那么如果我是按空格呢?大家想一想会是什么后果呢?
因为空格在C语言里面表示的是让程序停止运行,尽管我们上面的代码中输入了g但是依旧蹦年运行
那么这个程序就是没有达到我们的心里所预期的东西,那么我们如何根据上面的代码进行修改呢,我们这里一共提供两种思路来解决
方法1:用getchar清除
方法2:用格式串中空格或“%*c”来 吃掉
首先我们先解释方法1
将getchar插入到两个scanf函数之间,这样让getchar把中间我们敲的回车吃掉,这样就可以正常显示了,例如这样:
不知道大家有没有对这个很疑惑,为什么getchar可以把回车键吃掉?
这里呢,插入一个我在前面讲过的一个知识点,因为getchar是要输入的,而使用这个getchar只有一个要求,那就是必须是单一字符,如果位数多了他只识别第一位,那么回车键就是一个单一字符,getchar在这里识别的就是回车键和空格
其次我们解释第二个方法:用格式串中空格或“%*c”来 吃掉
那么怎么理解呢,我们在前面的学习学到了这个*是抑制符,可以指定输入项读入后不赋给变量,那么我们根据抑制符的特性,我们可以使用这个方法进行输入函数的垃圾处理
在这里面要特别强调的一点是,因为空格它是属于字符的,所以要在第二个scanf函数上面加,第一个是整形
以上呢使用%*c来吃吃掉空格或回车键,那么接下来的方法只针对于空格的情况,那就是在第二个scanf的%c的前面敲一个空格就行,那么我们在输入的时候,也一定要用空格将数字和空格进行分隔开,因为这个方法他只识别空格