2017-06-09 3 views
-2

次のCコードでは、scanfが機能しません。 プログラムを実行すると、2番目のprintf行まで実行され、scanf( "%c"、&セックス)はスキップされます。次の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)の前にこれが問題を解決します。書式指定子の前にスペースを入れて、改行文字をエスケープすることもできます。