zoukankan      html  css  js  c++  java
  • 从一个小程序,再谈scanf的用法

    下面这个程序:

     1 #include<stdio.h>
     2 int  main(void)
     3 {
     4        static int a[2][3]={{1,3,4},{7,9,6}};
     5        int i,j;
     6        while(1)
     7        {printf("Please input num:");
     8         
     9         //fflush(stdin);
    10         scanf("i=%d,j=%d",&i,&j);
    11         
    12         if(i<2&&j<3)
    13              printf("num=%d
    ",a[i][j]);
    14         else printf("Input is error,
    ");
    15        }
    16         printf("programm is complete.
    ");
    17     return 0;
    18 }

    当按要求,输入一个 ,比如 i=0,j=2 如下图

    出现了死循环,原因这样的,

      像scanf("i=%d j=%d",&i,&j);这样的输入方式比较特别,vc6.0.显然在第一次输入后没有像正常情况一样清楚输入缓冲区,这样第二次执行scanf时,程序并没有让你输入而是直接读入上次输入的结果。如果你一定要这么做,应该在scanf之前加上:

        fflush(stdin);

      这样清楚掉键盘缓冲区。

    下面这个程序

     1 #include<stdio.h>
     2 int  main(void)
     3 {
     4        static int a[2][3]={{1,3,4},{7,9,6}};
     5        int i,j;
     6        while(1)
     7        {printf("Please input num:");
     8         
     9         fflush(stdin);
    10         scanf("i=%d,j=%d",&i,&j);
    11         
    12         if(i<2&&j<3)
    13              printf("num=%d
    ",a[i][j]);
    14         else printf("Input is error,
    ");
    15        }
    16         printf("programm is complete.
    ");
    17     return 0;
    18 }
  • 相关阅读:
    SCCM2012 R2实战系列之四:初始化配置
    SCCM 2012 R2实战系列之一:SQL安装
    hdu 1242(bfs)
    hdu 1728(bfs)
    hdu 1253(bfs)
    hdu 3661
    hdu 1072(bfs)
    AC模版
    hdu 1010(dfs)
    poj 3628(01_page, dfs)
  • 原文地址:https://www.cnblogs.com/kalo1111/p/3281986.html
Copyright © 2011-2022 走看看