2017-04-26 2 views
-5

내 코드에서 scanf가 작동하지 않아 문자를 읽을 수 없습니다. 어떻게 해결할 수 있습니까?Scanf 작동하지 않았 음

#include <stdio.h> 
int main() { 
int a, result; 
// ***************** Menu ******************* 
printf("Hello !!! \n The Operations That This Calculator Can Do :"); 
printf("\n1. Simple Operations"); 
printf("\n2. Calculate The Biggest Number"); 
printf("\n3. Taylor expansion"); 
printf("\n4. Sum Digits Of a Number"); 
printf("\n5. Found The Prime Numbers Before The Number That You Entered"); 
printf("\nEnter The Number Of Operation That You Want : "); 
scanf_s("%d", &a); 
if (a == 1){ 
    char ch; 
    int num1, num2; 
    printf("\n Please Enter Your Operation Like That (- 5 3) : "); 
    scanf_s("%c", &ch); 
    if (ch == '-'){ scanf_s("%d", &num1); scanf_s("%d", &num2); result = num1 - num2; printf("\n > %d", result); } 
    if (ch == '+'){ scanf_s("%d", &num1); scanf_s("%d", &num2); result = num1 + num2; printf("\n > %d", result); } } return 0; } 
+0

아니오,'scanf'는 실제로 _did_ 작동하고'Enter'를 눌러 보내진 개행 문자를 읽습니다. 독서 후에'ch'의 내용을 확인해 보는게 어떨까요? – ForceBru

+1

시도하십시오 scanf_s ("% c", & ch, 1); – Robert

+0

'scanf_s ("% c", &ch);'? – chux

답변

0

이 시도 : 나는을 scanf하는) (scanf_s를 변경하고 자동으로 선행 공백을 건너되지 않습니다 %의 C 변환 지정자로 %의 C에 공간을 준, 그래서에서 (입력 스트림에서 길 잃은 줄 바꿈이 있다면 예를 들어, 이전 항목) scanf 호출은 즉시 그것을 소비합니다.

#include <stdio.h> 
int main() { 
int a, result; 
// ***************** Menu ******************* 
printf("Hello !!! \n The Operations That This Calculator Can Do :"); 
printf("\n1. Simple Operations"); 
printf("\n2. Calculate The Biggest Number"); 
printf("\n3. Taylor expansion"); 
printf("\n4. Sum Digits Of a Number"); 
printf("\n5. Found The Prime Numbers Before The Number That You Entered"); 
printf("\nEnter The Number Of Operation That You Want : "); 
scanf("%d", &a); 
if (a == 1){ 
char ch; 
int num1, num2; 
printf("\n Please Enter Your Operation Like That (- 5 3) : "); 
scanf(" %c", &ch); 
if (ch == '-'){ scanf(" %d", &num1); scanf(" %d", &num2); result = num1 - 
num2; printf("\n > %d", result); } 
if (ch == '+'){ scanf(" %d", &num1); scanf(" %d", &num2); result = num1 + 
num2; printf("\n > %d", result); } } 
system("pause"); } 
+0

)에 대한 경고를 생성하지 않은 컴파일러는 무엇입니까?이 응답은'scanf_s()'를 조용히'scanf()'로 변경합니다. . – chux

관련 문제