码迷,mamicode.com
首页 > 其他好文 > 详细

关于scanf的几种处理方法

时间:2014-07-23 22:37:37      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:异常   c语言   c   


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

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的几种处理方法

标签:异常   c语言   c   

原文地址:http://blog.csdn.net/u012860063/article/details/38071077

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!