在c结构数组中显示值

时间:2014-05-28 16:27:39

标签: c arrays pointers structure

我正在尝试显示我的结构数组的值,编译器抛出以下错误:

athletes.c:17: error: expected ')' before '*' token

有人可以帮我解决问题吗?如果可能的话,可以解释一下我做错了什么。

#include <stdio.h>
#include <string.h>
struct athlete {
  char last_name[25];
  char first_name [20];
  int rank;
  float salary;
  };


int main (void) {
    struct athlete players[] = {{"Lebron", "James",1,25}, {"Durant", "Kevin",3,20},{"Duncan","Tim",2,12}};
    display_jock(players);

}

void display_jock(athlete *p) {
    printf ("%10c%10c%10d%10.1f \n", p[0].last_name,p[0].first_name,p[0].rank, p[0].salary);
    printf ("%10c%10c%10d%10.1f \n", p[1].last_name,p[1].first_name,p[1].rank, p[1].salary);
    printf ("%10c%10c%10d%10.1f \n", p[2].last_name,p[2].first_name,p[2].rank, p[2].salary);
}

1 个答案:

答案 0 :(得分:3)

有几个小错误:

  • 你的代码不知道类型&#34;运动员&#34;,所以你的类display_jock应该用参数struct athlete定义:void display_jock(struct athlete *p)
  • 你应该转发声明该功能:否则主要不知道它(编辑:你也可以只移动主要功能顶部的display_jock功能)< / LI>
  • 打印char数组时,使用printf时应使用%s而不是%c
  • 您的主要功能应返回int(因为它被声明为int main...

这是你修改的代码:

#include <stdio.h>
#include <string.h>
struct athlete {
  char last_name[25];
  char first_name [20];
  int rank;
  float salary;
  };

void display_jock(struct athlete *p);


int main (void) {
    struct athlete players[] = {{"Lebron", "James",1,25}, {"Durant", "Kevin",3,20},{"Duncan","Tim",2,12}};
    display_jock(players);
    return 0;

}

void display_jock(struct athlete *p) {
    printf ("%s%s%10d%10.1f \n", p[0].last_name,p[0].first_name,p[0].rank, p[0].salary);
    printf ("%s%s%10d%10.1f \n", p[1].last_name,p[1].first_name,p[1].rank, p[1].salary);
    printf ("%s%s%10d%10.1f \n", p[2].last_name,p[2].first_name,p[2].rank, p[2].salary);
}