将整数值分配给C中结构中的枚举?

时间:2014-10-05 21:57:55

标签: c struct enums

我现在正在学习枚举和结构,并且有一个我无法解决的案例。如果我有一个基本的结构并定义一个员工,我看到我可以做以下事情..

我将员工添加到第一项,但是如何让用户输入一个整数,然后使用嵌套在struct中的枚举将该整数分配给Low,Medium或High?谢谢!

struct add {

    char employee[255];
    enum EmployeeLevel {Low = 0, Medium, High};
};

struct add EMP[10]; //Global variable to add employees using the add struct

printf("Please enter employee name\n");
scanf("%s", EMP[0].employee); //Assigns the user input to the name of the first employee

2 个答案:

答案 0 :(得分:0)

可能会关闭,但你可以这样做:

enum EmployeeLevel {Low = 0, Medium, High};  //declare the enum outside the struct


struct add {

    char employee[255];
    enum EmployeeLevel level;                //create a variable of type EmployeeLevel inside the struct
};

struct add EMP[10]; //Global variable to add employees using the add struct

printf("Please enter employee name\n");
scanf("%s", EMP[0].employee); //Assigns the user input to the name of the first employee
scanf("%d", EMP[0].level); //Assings a level to the corresponding employee

答案 1 :(得分:0)

这只是行不通。 scanf需要知道它以字节为单位读取的项目的大小。但是,C没有为枚举定义该大小。

创建一个int类型的临时变量,scanf到该变量,然后将其分配给枚举。显然要注意,如果你改变你的枚举,你将遇到麻烦,因为数字的含义会改变。显然要注意,如果你的程序达到任何合理的大小,使用一个非常短的名字,如低,中,高作为枚举会让你陷入困境。请改用eEmployeeLevel_Low之类的东西。