scanf被跳过

时间:2011-08-28 01:01:29

标签: c++

我有以下代码,我已经定义了我在这里调用的函数,这里的问题是:我运行代码 输入:1 输入:2 输入:2 输入:6 输入:5 6 //用于与i = 6相关联的scanf; 在此之后,我得到屏幕上的输出为 输入你的选择然后它退出程序...它像scanf从某处获取值但我不知道从哪里我也尝试fflush(stdin)似乎工作可以任何人请帮助

int main()
{

  int i,*j,k,pos,val;
  Element *stacka = new Element;

  stacka =NULL;

  while(i!=5)
  {

    printf("Enter ur choice \n");
    fflush(stdin);
    scanf("%d",&i);

    if(i==1)
    {
      if(createStack(&stacka))
      {
        printf("yes");

      }
    }

    if(i==2)
    {
      k=2; 
      if(push(&stacka,&j))
      {
        printf("yes");

      }
    }

    if(i==3)
    {
      if(pop(&stacka,&k))
      {

        printf("yes %d",k);


      }
    }

    if(i==4)
    {
      if(emptyStack(&stacka))
      {
        printf("yes");

      }
    }

    if(i==6)
    {
      scanf("%d,%d",&pos,&val);
      fflush(stdin);
      insert_at_pos(pos,val,&stacka);

    }

  }
return 0;
}

1 个答案:

答案 0 :(得分:3)

尝试在%d之前插入一个空格:

scanf(" %d,%d",&pos,&val);

这将占用输入缓冲区中可能存在的任何前导空格,例如,i之前条目中的换行符。

此外,在循环之前初始化i