2011-02-24 40 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