输入输入—scanf

scanf

 

 

返回值:

scanf("%d %d",&a,&b);
 
scanf返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF(-1)。
 
 
 
scanf读取输入缓冲区的数据:
未清空缓冲区如下
 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n;
 6 loop:
 7     if( scanf("%d", n) == 0 )
 8     {
 9         printf("input error");
10 //        getchar();
11         goto loop;
12     }
13     return 0;
14 } 

  如果输入字符w这段程序将会无线循环输出“input error”,解释着个现象之前必须先解释scanf的工作原理。首先用户在键盘输入w然后回车,字符w进入输入缓冲区。然后scanf函数到输入缓冲区寻找整型量,但是w是字符型,所以scanf返回返回值0。这时程序跳到loop处继续执行,但是这时输入缓冲区中的w没有被拿走所以陷入死循环。

  解决办法是取消代码中第十行的注释,getchar函数会拿走缓冲区中的字符w。

 

posted @ 2019-06-27 11:41  火车没有火  阅读(337)  评论(0编辑  收藏  举报