在C中,说我有:
typedef struct player {
char Fname[25];
int Singles;
int Doubles;
int Triples;
int Homeruns;
} Player;
并在main()中定义了
Player* players;
指向播放器类型的指针。现在说我有一个函数从文件中读取每个Player类型的数据:
void read_from_file(char* filename, Player* players, int size) {
FILE* fp;
fp = fopen(filename, "r");
while (players < size) {
fscanf(fp, "%s%d%d%d%d", *players.Fname, *players.Singles, *players.Doubles, *players.Triples, *players.Homeruns);
players++;
}
}
它表示“Fname”,“单身”,“双打”等是在结构或联盟中要求的。但玩家被解除引用,所以它应该给一个结构权利吗?任何帮助表示赞赏。
答案 0 :(得分:2)
主要问题是运算符优先级,因为*players.Fname
实际上意味着*(players.Fname)
(不适用players
类型为Player*
),而不是(*players).Fname
},(这会起作用)。
无论如何,您可以使用运算符->
通过指针变量访问成员。所以你可以写......
scanf("%d", &player->Singles);
而不是更笨拙的符号...
scanf("%d", &(*player).Singles);