关于scanf的几种处理方法


字符输入中,赋值顺序和缓存的联系

scanf是从标准输入缓冲区中读取输入的数据,假设连续输入两个%c格式的字符。而中间又要涉及回车,那么第二个字符将被赋予回车。

   解决的方法:

       1清空输入缓冲区

       第一个scanf后增加语句:fflush(stdin); //C语言清空输入缓冲区函数

       2格式控制中增加空格

       将第二个scanf改为:scanf(" %c",&ch2);//%号前面加一个空格

scanf格式输入时要求输入格式与格式控制符中的全然一样(如:scanf("abcd%c",&ch);输入时必须输入abcde,ch得到的值为e)空格能够抵消前面输入的回车符。

3直接用ch=getche()吸收回车

4当输入完整数或字符时。后面还须要输入字符时,为了避免输入的字符变成回车符,能够在输入字符前多加一条scanf语句来吃掉前面的回车符。

此时用来吃掉回车符的scanf输入能够用%c方式,也能够用%d方式。当用%c方式来吃掉回车符时,回车符被读进了char类型变量中,当用%d方式来吃掉回车符时,回车符并没有被送进int类型变量中。而是在异常的字符输入后,被自己主动清除了。


你可能感兴趣的:(关于scanf的几种处理方法)