您好我试图将参数添加到我的结构数组中但是当我尝试使用" scanf"它给了我一个错误
下标值既不是数组也不是指针
如果您帮助我理解它的结果以及如何解决它,我会很高兴。 谢谢
我的代码 -
#include <stdio.h>
#include <stdlib.h>
#define N 6
struct player
{
char name[20];
float height;
float points_number;
int vest_number;
};
int main()
{
struct player basketball;
int i,j;
for(i = 0; i < N ; i++)
{
for(j = 0 ; j < N ; j++)
{
printf("Enter player name: \n");
scanf("%s",basketball[i].name[j]);
}
printf("Enter Player height: \n");
scanf("%f",&basketball[i].height);
printf("Enter average number of points: \n");
scanf("%f",&basketball[i].points_number);
printf("Enter vest number: \n");
scanf("%d",&basketball[i].vest_number);
}
}
答案 0 :(得分:1)
您只声明1 struct player basketball;
,但您尝试使用6.这不好。并且char name[20]
并不意味着您有20个字符串,但是您有1个字符串,最多包含20个字符。
你应该为玩家动态分配内存或使用数组。
当您使用scanf
时,您需要传入您尝试阅读的数据的地址。
答案 1 :(得分:1)
定义struct player数组:
player basketball[6];
阅读每个玩家数据:
for(i = 0; i < N ; i++)
{
printf("Enter player name: \n");
scanf("%s",&basketball[i].name);
printf("Enter Player height: \n");
scanf("%f",&basketball[i].height);
printf("Enter average number of points: \n");
scanf("%f",&basketball[i].points_number);
printf("Enter vest number: \n");
scanf("%d",&basketball[i].vest_number);
}