[英]How to match a varible in a struct array, then the position
首先发布在这里。 编码也有些新知识。
现在我停了下来。 我需要做的是从一个雇员ID的用户那里获取输入,然后在struct数组变量中找到它,并不断询问直到输入正确的..都在do-while循环中进行。 然后,我需要打印该员工的工资并将其更新为新的工资。
我很难弄清楚如何在结构数组中查找该员工ID,然后完成后,保存该结构数组的位置,以便我可以打印该员工的薪水,然后将其更新为其他内容。
这是一些代码,以显示struct数组
#define SIZE 4
struct employee{
int id[SIZE] ;
int age[SIZE];
double salary[SIZE];
};
/* main program */
int main(void) {
struct employee emp[SIZE] = { 0 };
这是一些显示我所做的代码的代码
case 3: //Update Employee
printf("Update Employee Salary\n");
printf("======================\n");
int employid;
do{
printf("Enter Employee ID: ");
scanf("%d", &employid);
}while(employid != emp->id[SIZE]);
printf("The current salary is %lf", emp->salary[SIZE]);
break;
我知道这是错的。 While只看当前职位,而printf也只打印当前数组员工的薪水。
任何帮助,将不胜感激。
奖励:请注意,当我分配/使用结构时,必须输入“->”以实际告诉编译器我指向结构中的特定变量。 通常我放“。” 而且不知道为什么我需要放-> ..我刚刚在网上找到了修复程序。
通常是“ emp.id [SIZE];”
NOT“ emp-> id [SIZE];”
有人有想法么?
谢谢大家
考虑到您对结构的输入是正确的,因此您可以做的事情很少。
问题是您需要意识到需要一个while/for
循环来遍历employee数组。
第二件事是,这里您没有正确比较它。 您只是在与第一个元素进行比较。
现在您可以做的是
bool found = false;
int foundEmpId = -1;
do{
printf("Enter Employee ID: ");
scanf("%d", &employid);
for(size_t i = 0; i< SIZE; i++)
if( emp[i].id == employid ){
foundEmpId = employid;
found = true;
break;
}
}while(!found);
// do your work.
现在,这只是O(n)
搜索。
除此之外,您可以在我的代码中看到一件事。 我正在使用emp[i].id
。 这里我考虑的结构是
struct employee{
int id ;
int age;
double salary;
};
如果您想到的是员工,则需要在此处添加这些属性。 您所做的是与不同组的员工一起工作。
在这里,您将像这样工作
struct employee emps[SIZE];
...
...
// the attributes of employee will be inputted like this
// if( scanf("%d",&emps[i].id) == 1 ) { /* */ }
...
emp->id[SIZE]
? 剖析emp->id[SIZE]
等效于(*emp).id[SIZE]
或更确切地说emp[0].id[SIZE]
。
总结问题/建议:
P显示的代码部分表明您没有与所有员工进行比较。
P您已创建员工组。 但是您不是在迭代或使用所有组。 您刚刚在第一个员工组工作。
S不应使用雇员组阵列,而应仅使用雇员组。 或者即使您确实使用多名雇员,也只有一组就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.