繁体   English   中英

如何匹配结构数组中的变量,然后匹配位置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM