c - char变量在没有输入的情况下继续

时间:2016-02-15 16:44:55

标签: c

我编写了一个程序来输入两个数字,并根据指定的操作添加或减去数字。 这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float i, j, k;
    char a;
    printf("This is a program to add or subs two number.\n");
    printf("Enter the first number : ");
    scanf("%f", &i);
    printf("Enter the second number : ");
    scanf("%f", &j);
    printf("Give your choice(+ or -): ");
    scanf("%c", &a);
    switch(a){
        case '+' :
            k = i + j;
            printf("Sum = %f\n", k);
            break;
        case '-' :
            k = i - j;
            printf("Difference = %f\n", k);
            break;
        default:
            printf("Cannot do this operation\n");
    }
    return 0;
}

此程序接收两个数字的输入但跳过输入操作并运行默认情况。请帮忙! (我正在使用gcc编译器。)

1 个答案:

答案 0 :(得分:2)

%c转换说明符不会自动跳过任何前导空格,因此如果输入流中存在一个迷路换行符(例如,来自前一个条目),则scanf调用将立即使用它。

解决此问题的一种方法是在转换说明符之前的格式字符串中放置一个空格:

scanf(“%c”,&amp; a); 格式字符串中的空白告诉scanf跳过前导空格,第一个非空白字符将使用%c转换说明符读取。

-Aditya