为什么会跳过getchar()? [英] Why is getchar() being skipped?
本文介绍了为什么会跳过getchar()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我下面正在处理的代码.输出是这样的:
This is my code below, which I was working on. The output is this:
Enter Nums: 20 4
OP: Which option was that?
op = getchar();
部分被完全忽略.为什么?
我正在使用gcc 4.6.2 MinGW.
The op = getchar();
part is being entirely ignored. Why?
I'm using gcc 4.6.2 MinGW.
#include <stdio.h>
int add(int num1, int num2) {
return num1 + num2;
}
int subs(int num1, int num2) {
return num1 - num2;
}
int mul(int num1, int num2) {
return num1 * num2;
}
float div(int num1, int num2) {
return (float)num1 / num2;
}
int main(int argc, char* argv[]) {
int num1, num2;
char op;
fprintf(stdout,"Enter Nums: ");
scanf("%d %d",&num1,&num2);
fprintf(stdout, "OP: ");
op = getchar();
switch(op) {
case '+':
printf("%d",add(num1, num2));
break;
case '-':
printf("%d", subs(num1,num2));
break;
case '*':
printf("%d",mul(num1,num2));
break;
case '/':
printf("%f",div(num1, num2));
break;
default:
printf("Which option was that?\n");
}
return 0;
}
推荐答案
scanf("%d %d",&num1,&num2);
此输入后有一个换行符,您需要忽略它
There is a newline character after this input and you need to ignore it
scanf("%d %d%*c",&num1,&num2);
或
while((c=getchar()) != '\n') && c != EOF);
否则换行符由getchar()
这篇关于为什么会跳过getchar()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文