C - 通过函数参数传递结构

时间:2013-11-09 00:29:25

标签: c function arguments structure

我被要求编写一个函数,它从结构类型中获取两个值并进行比较。如果它们相等,它希望我从这些结构中添加另外两个值并将其发送到另一个结构。它也应该通过函数名返回1或0,所以我将函数定义为int。

我曾尝试编写一个程序,该程序记录员工的社会安全号码及其工资,然后是另一名员工的ssn和工资。如果社会是相同的,它将两个工资结合起来,并将它们发送到另一个包含雇员总工资的结构。

每次提到功能比较时,我都会收到错误。这似乎是由于函数的参数。怎么能这样做呢?

#include <stdio.h>
#include <stdlib.h>

#define EMPLOYEE_COUNT 4

struct ewage
{
       int ssn;
       int wage;
}

struct record
{
       int totalwage;
}

int compare(struct ewage s1, struct ewage s2, struct record *r);

int main (void)
{
    struct ewage e[EMPLOYEE_COUNT];
    struct record r[EMPLOYEE_COUNT];
    int i, j;
    for (i = 0; i < EMPLOYEE_COUNT; i ++)
    {
        for (j = i + 1; j < EMPLOYEE_COUNT; j ++)
        {
            int success = compare(e[i], e[j], &record[i]);
            if (success == 1)
                        printf ("%d / %d | Record: %d \n", i, j, record[i]);
            else
                        printf ("%d / %d | DOES NOT MATCH \n", i, j);
        }
    }

    system ("PAUSE");
    return 0;
}

int compare(struct ewage s1, struct ewage s2, struct record *r)
{
       if (s1.ssn == s2.ssn)
       {
                  r->totalwage = s1.wage + s2.wage;
                  return 1;
       }
       return 0;
}

2 个答案:

答案 0 :(得分:0)

结构定义后需要使用分号

struct ewage
{
       int ssn;
       int wage;
}; // here

struct record
{
       int totalwage;
}; // here

记录没有定义,我假设它的真实姓名是r

int success = compare(e[i], e[j], &r[i]); // here
if (success == 1)
    printf ("%d / %d | Record: %d \n", i, j, &r[i]); // here

最后,你需要用最终的%d打印一些东西,我在这里假设总工资:

printf ("%d / %d | Record: %d \n", i, j, r[i].totalwage); // here

现在你可以开始调试它了......

答案 1 :(得分:0)

有一些错误: 1.应该是';'在定义结构之后 2.你不应该将类型'记录'传递给你的函数比较,而应该传递&amp; r [i]