2011-02-24 66 views
2
#include<stdio.h> 
#include<conio.h> 
void main() 
{ 
    int a,b,c; 
    char ch; 
    printf("Enter value of a and b"); 
    scanf("%d %d",&a,&b); 
    printf("Enter choice of operation"); 
    scanf("%c",&ch);// **Here this statment is not able to receive my input*** 
    switch(ch) 
    { 
    case '+': 
      c=a+b; 
      break; 
    case '-': 
      c=a-b; 
      break; 

    default: 
      printf("invalid"); 
      break; 
    } 
getch(); 
} 

錯誤:在C題中掃描字符

scanf("%c",&ch); // 下面這statment不能接受我的輸入 無法掃描用戶給定的輸入??????

感謝..

回答

1

如果你只是在一個單一的字符閱讀,你可以只使用getchar() -

c = getchar(); 
1

對於單個字符輸入,使用的getchar()。

4

它從您以前的數據條目中獲取換行符。直接使用fgets()sscanf()來代替直接使用scanf()

6

與大多數轉換不同,%c確實不是而是在轉換字符之前跳過空格。用戶輸入兩個數字後,輸入緩衝區中會留下回車/換行符,等待讀取 - 這就是%c讀取的內容。

+5

'scanf(「%c」,&ch)'會修復它。 – 2011-02-24 19:44:26

1

試試吧 scanf(" %c", &ch); 這是因爲你的scanf將第二個數字之後的空格當作要插入到ch中的字符。

3

在這裏的聲明寫%s而不是%c。它一定會奏效。

scanf("%s",&ch); 
+0

是的,它適合我。 – Uncle 2016-12-21 17:36:08

1

使用getchar()sscanf()取其安慰更多。

char ch; 

ch = getchar(); 

這很簡單。如果您想使用scanf("%c",&ch);,那麼 只是從您之前的printf()聲明中刪除\n