热情软件屋

 

Scanf没有被调用


编号:QA001380
建立日期: 1999年7月21日 最后修改日期:1999年7月21日
所属类别:

sunny:
    我初学C程序,所以提的问题很浅,希望您不要见笑。我自己编了一个程序,但运行的结果与我预期的不一样。
    # include
    main()
    {static int a[2][3]={{1,3,4},{7,9,6}};
    int i,j,k;
    for(k=1;k<=2;k++)
    {printf("Please input num:");
    scanf("%d %d",&i,&j);
    if(i<2&&j<3)
    printf("num=%d\n",a[i][j]);
    else printf("Input is error,\n");
    }
    printf("programm is complete.\n");
    }
    我想将第7行改为
    scanf("i=%d j=%d",&i,&j);
    则程序运行结果变成
    please input num:i=1 j=2
    num=6
    num=6(我原本希望能重复第一行再让我输入)
    Programm is complete.
    为什么第二次不能输入?

回答:

    我使用Turbo C 2.0证实存在你说的问题。象scanf("i=%d j=%d",&i,&j);这样的输入方式比较特别,TC 2.0显然在第一次输入后没有象正常情况一样清楚输入缓冲区,这样第二次执行scanf时,程序并没有让你输入而是直接读入上次输入的结果。如果你一定要这么做,应该在scanf之前加上:
    fflush(stdin);
    这样清楚掉键盘缓冲区。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio