我现在正在学习枚举和结构,并且有一个我无法解决的案例。如果我有一个基本的结构并定义一个员工,我看到我可以做以下事情..
我将员工添加到第一项,但是如何让用户输入一个整数,然后使用嵌套在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
答案 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之类的东西。