#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();
}
错误:
scanf("%c",&ch);
// 此声明无法接收我的输入
无法扫描用户提供的输入??????
感谢..
答案 0 :(得分:7)
与大多数转化不同,%c
在转换字符之前不会跳过空格。用户输入两个数字后,输入缓冲区中会有一个回车符/换行符等待读取 - 这就是%c
读取的内容。
答案 1 :(得分:4)
它从您之前的数据条目中获取换行符。请考虑使用fgets()
和sscanf()
,而不是直接使用scanf()
。
答案 2 :(得分:3)
试试吧
scanf(" %c", &ch);
这是因为你的scanf将第二个数字后面的空格视为要插入ch的字符。
答案 3 :(得分:3)
此声明中写%s
而不是%c
。它肯定会奏效。
scanf("%s",&ch);
答案 4 :(得分:1)
如果您只是阅读一个字符,则可以使用getchar()
-
c = getchar();
答案 5 :(得分:1)
对于单个字符输入,请使用getchar()。
答案 6 :(得分:1)
使用getchar()
或sscanf()
以其他方式安慰。
像
char ch;
ch = getchar();
这很简单。如果你想使用scanf("%c",&ch);
那么,
只需从之前的\n
声明中删除printf()
。
答案 7 :(得分:1)
在这个问题上你可以这样写 scanf(“%c”,&ch);
空格将覆盖您的“ Enter”字符,然后扫描您要输入的内容... https://ide.geeksforgeeks.org/ANGPHrqeAq