2016-11-04 2 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; 
} 

실행 후 두 개의 숫자 5, 10 및 하나의 연산자 +를 입력했습니다. 하지만 나는 결과를 얻지 못했습니다. 하지만 다른 값을 입력하면 결과가 나옵니다. 예 :이 C 프로그램이 제대로 실행되지 않는 이유는 무엇입니까?

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

'scanf ("% d % d % c", & x, & y, & 연산자); '-> 반환 값을 확인하십시오. –

+0

"% d % d % c"에서 "% d % d % c"로 충분하지 않습니다. ;) – LPs

+0

scanf()에서 공백을 제거하여 올바른 출력을 얻었습니다. –

답변

0

당신이 scanf()에있는 공백은 모든 공백 문자는 (따라서 당신이 그것을 무시있어, Enter 키를 누르십시오) 무시됩니다 보장합니다. 따라서 공백 문자가 아닌 문자를 입력해야합니다. scanf() 설명서를 참조하십시오. 해결 방법은 scanf()에서 공백 문자를 제거하는 것입니다.

scanf()은 입력 판독 값으로 악명이 높습니다. 따라서 fgets()을 사용하고 나서 sscanf()을 사용하여 구문 분석해야합니다.

또한 참조 : 그것 때문에 당신의 scanf("%d %d %c ",&x,&y,&operator); 문의 일이 Why does everyone say not to use scanf? What should I use instead?

+0

예 scanf()에서 공백을 제거하여 솔루션 있어요. . 고맙습니다. –

0

, 단지 %c 후 공간을 제거합니다. scanf("%d %d %c",&x,&y,&operator);

Scanf 방법에 공간을 추가하는 동안 Resone은 검색을 계속 진행합니다.