zoukankan      html  css  js  c++  java
  • 输入输入—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。

  • 相关阅读:
    week02 线性表
    week01绪论
    第一周作业
    C语言第二次实验作业
    C语言实验报告
    博客作业06--图
    博客作业05--查找
    博客作业04--树
    博客作业03--栈和队列
    博客作业2---线性表
  • 原文地址:https://www.cnblogs.com/huochemeiyouhuo/p/11096114.html
Copyright © 2011-2022 走看看