c - 为什么要跳过 getchar()?

标签 c io mingw mingw32 getchar

<分区>

下面是我正在处理的代码。输出是这样的:

Enter Nums: 20 4
OP: Which option was that?

op = getchar(); 部分被完全忽略。为什么?
我正在使用 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);

此输入后有一个换行符,需要忽略

scanf("%d %d%*c",&num1,&num2);

while((c=getchar()) != '\n') && c != EOF);

否则换行符由 getchar()

获取

关于c - 为什么要跳过 getchar()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870562/

相关文章:

java - 列出与 Java 中的模式匹配的目录中的文件

java - 对于少量信息,java 文件 i/o 或 derby 哪个更快?

c++ - 乱码编译器 (MinGW) 输出

c - GtkCellRendererPixbuf 和信号

c - 减法指针不指向同一数组的不同元素在 C 中有效吗?

scala - 将元素从队列中取出时写入文件 : Scala fs2 Stream

c++ - 无法使用 MinGW C++ 在 NetBeans IDE 7.3 中编译 "Hello World"

c++ - 在Linux上安装gcc

c - 了解 container_of

c - "undefined reference to strerror_r"与 OpenSSL-1.1.0e 和 MinGW