输入浮点值后无法输入整数

Cannot input integer after inputting float value

我的 C 程序遇到了一个奇怪的问题。从用户那里获得浮点数输入(薪水)后,程序结束并跳过要求整数输入(empcode)的行。谁能告诉我为什么会这样,我该怎么办?

#include <stdio.h>
#include <string.h>

struct employee{
    int empcode;
    float salary;
    char name[30];
};

int main(){
    struct employee e1, e2, e3;

    printf("\nEnter name for e1: ");
    gets(e1.name);
    printf("\nEnter salary for e1: ");
    scanf("%f", e1.salary);
    printf("\nEnter employee code for e1: ");
    scanf("%d", e1.empcode);
    return 0;
}

你必须写

scanf("%f", &e1.salary);
scanf("%d", &e1.empcode);

而不是

scanf("%f", e1.salary);
scanf("%d", e1.empcode);

那就是你需要通过指向参数的指针来传递参数。

注意函数gets不安全,C标准不支持。而是使用函数 fgets.