2011-08-28 93 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