2017-06-09 57 views
-2

在以下c代碼中,scanf不起作用。 當程序運行時,它執行到第二個printf行,並跳過scanf(「%c」,& sex);並直接執行下一個printf()。 爲什麼會這樣發生?我在不同的c編譯器上運行這個代碼,但輸出是一樣的。運行時錯誤的Scanf();

#include<stdio.h> 
void main() 
{ 
    char mar,sex; 
    int age,flag=0; 

    printf("Married [Y/N]:"); 
    scanf("%c",&mar); 

    printf("Sex [M/F] :"); 
    scanf("%c",&sex); //**This not working** 

    printf("Age :"); //**execution directly jumped here** 
    scanf("%d",&age); 

    if(mar=='y') 
    flag=1; 
    else if(sex=='m'&& age>=30) 
    flag=1; 
    else if(sex=='f'&& age>=25) 
    flag=1; 
    else 
    { 
    } 
    if(flag) 
    { 
    printf("Congratulations!!!! You are Egligible.."); 
    else 
    printf("Sorry... You are not egligible.."); 

getch(); 
} 

//輸出

Married [Y/N]:y 
Sex [M/F] :Age :23 
Congratulations!!!! You are Egligible.. 

回答

0

的問題是與你按你輸入之前的scanf函數值(Y/N)後的新行字符。新行字符作爲輸入,程序繼續下一個。嘗試使用flushall();在下次閱讀(即scanf)之前,這將解決您的問題。您也可以在格式說明符之前使用空格來解決此問題,這將會轉義換行符。