在c结构数组中显示值

在c结构数组中显示值,c,arrays,pointers,structure,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;

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

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);
}
#包括
#包括
结构运动员{
char last_name[25];
char first_name[20];
整数秩;
浮动工资;
};
内部主(空){
结构性运动员[]={“勒布朗”,“詹姆斯”,1,25},{“杜兰特”,“凯文”,3,20},{“邓肯”,“蒂姆”,2,12};
展示运动员;
}
无效显示(运动员*p){
printf(“%10c%10c%10d%10.1f\n”,p[0]。姓,p[0]。名,p[0]。职级,p[0]。工资);
printf(“%10c%10c%10d%10.1f\n”,p[1]。姓,p[1]。名,p[1]。职级,p[1]。工资);
printf(“%10c%10c%10d%10.1f\n”,p[2]。姓,p[2]。名,p[2]。职级,p[2]。工资);
}

有几个小错误:

  • 您的代码不知道类型“运动员”,因此您的类display\u jock应该使用参数struct athleter:
    void display\u jock(struct athleter*p)
  • 您应该向前声明该函数:否则main不知道它(edit:您也可以将
    display\u jock
    函数移动到main函数的顶部)
  • 打印字符数组时,使用printf时应使用
    %s
    而不是
    %c
  • main函数应该返回一个
    int
    (因为它被声明为
    intmain…
这是已修复的代码:

#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);
}
#包括
#包括
结构运动员{
char last_name[25];
char first_name[20];
整数秩;
浮动工资;
};
无效显示运动员(结构运动员*p);
内部主(空){
结构性运动员[]={“勒布朗”,“詹姆斯”,1,25},{“杜兰特”,“凯文”,3,20},{“邓肯”,“蒂姆”,2,12};
展示运动员;
返回0;
}
无效显示运动员(结构运动员*p){
printf(“%s%s%10d%10.1f\n”,p[0]。姓,p[0]。名,p[0]。职级,p[0]。工资);
printf(“%s%s%10d%10.1f\n”,p[1]。姓,p[1]。名,p[1]。职级,p[1]。工资);
printf(“%s%s%10d%10.1f\n”,p[2]。姓,p[2]。名,p[2]。职级,p[2]。工资);
}

有几个小错误:

  • 您的代码不知道类型“运动员”,因此您的类display\u jock应该使用参数struct athleter:
    void display\u jock(struct athleter*p)
  • 您应该向前声明该函数:否则main不知道它(edit:您也可以将
    display\u jock
    函数移动到main函数的顶部)
  • 打印字符数组时,使用printf时应使用
    %s
    而不是
    %c
  • main函数应该返回一个
    int
    (因为它被声明为
    intmain…
这是已修复的代码:

#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);
}
#包括
#包括
结构运动员{
char last_name[25];
char first_name[20];
整数秩;
浮动工资;
};
无效显示运动员(结构运动员*p);
内部主(空){
结构性运动员[]={“勒布朗”,“詹姆斯”,1,25},{“杜兰特”,“凯文”,3,20},{“邓肯”,“蒂姆”,2,12};
展示运动员;
返回0;
}
无效显示运动员(结构运动员*p){
printf(“%s%s%10d%10.1f\n”,p[0]。姓,p[0]。名,p[0]。职级,p[0]。工资);
printf(“%s%s%10d%10.1f\n”,p[1]。姓,p[1]。名,p[1]。职级,p[1]。工资);
printf(“%s%s%10d%10.1f\n”,p[2]。姓,p[2]。名,p[2]。职级,p[2]。工资);
}

以下错误是什么?
无效显示(运动员*p){
-->
无效显示(结构运动员*p){
并将原型放在主前。
%10c%10c%10d%10.1f\n
-->%10s%10d%10.1f\n我在实现修复运动员时遇到以下错误。c:17:警告:“display\u jock”运动员的类型冲突。c:13:注意:“display\u jock”的先前隐式声明在此移动
display\u jock()
main()
之前。以下错误是什么?
无效display\u jock(运动员*p){
-->void display\u jock(struct playter*p){并将原型放在main之前。
%10c%10c%10d%10.1f\n
-->
%10s%10s%10d%10.1f\n”
我在实现您的修复程序时遇到以下错误。c:17:警告:“显示运动”运动员的类型冲突。c:13:注意:“显示运动”的上一个隐式声明在此移动
display\u jock()
main()
之前。