2017-04-26 42 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_s()以scanf函數,給空間%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()'。'%c' 。 – chux