接收结构数组

时间:2014-04-07 08:11:04

标签: c arrays pointers struct

您好我试图将参数添加到我的结构数组中但是当我尝试使用" 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);
}

 }

2 个答案:

答案 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);
}