2016-11-04 6 views
0
#include<stdio.h> 
int main() 
{ 
    int x,y; 
    unsigned char operator; 
    printf("Enter two numbers and one operater \n"); 
    scanf("%d %d %c ",&x,&y,&operator); // check " and commas 
    printf("Output "); 
    switch(operator) 
    { 
     case '+':printf("%d",x+y); // dont jst copy paste read and paste 
     break; 

     case '-':printf("%d",x-y); 
     break; 

     case '*':printf("%d",x*y); 
     break; 

     case '/':printf("%d",x/y); 
     break; 

     default: printf("invalid operator"); 

    } 
return 0; 
} 

実行後、私は2つの数字5,10と1つの演算子+を入力しました。しかし、私は何の出力も得られませんでした。しかし、私は他の値を入力した後、私は出力を得た。 例:このCプログラムが正しく実行されないのはなぜですか?

Enter two numbers and one operater 
40 20 
+ 
10 
Output 60 
+3

'scanf("%d%d%c "、&x、&y、&operator); ' - >戻り値をチェックします。 –

+0

「%d%d%c」から「%d%d%c」に変更するのは難しいです。 ;) – LPs

+0

scanf()の空白を取り除くことによって正しい出力を得ました。 –

答えて

0

あなたはscanf()に持っている空白はすべての空白文字を確実には(したがって、あなたはそれが無視されます、ENTERヒット)は無視されます。したがって、空白以外の文字を入力する必要がありました。詳しくはscanf()のドキュメントをご覧ください。解決方法は、scanf()から空白文字を削除することです。

scanf()は入力読書で有名です。したがって、fgets()の使用を検討してから、sscanf()を使用して解析してください。

も参照してください:Why does everyone say not to use scanf? What should I use instead?

+0

はい私はscanf()の空白を削除して解決策を得ました。 。ありがとうございました。 –

0

をそれが起こっているため、あなたのscanf("%d %d %c ",&x,&y,&operator);声明で、ちょうど%cの後にスペースを削除してください。 scanf("%d %d %c",&x,&y,&operator);

スキャンを続行するには、スキャンを続行します。

関連する問題