2011-08-28 86 views
-2

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

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; 
} 
+0

downvote请原因? – koool

+0

我不明白这个问题 –

+0

首先,'fflush(stdin);'是无效的;它调用未定义的行为。谁教你做到这一点? –

回答

3

尝试插入空格前%d

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

这将吃任何前导空格,可能是在输入缓冲区中,例如,从早期进入的新行i

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

+0

尊重!!!经过几个评论后,我感觉我在做一些愚蠢的事情。谢谢我不能弄清楚 – koool