У меня есть такая структура:
typedef struct {
char name[31];
int played;
int won;
int lost;
int tie;
int points;
} Player;
И эта функция, которая заполняет массив struct данными из файла:
int load(Player *players[], int max_players, int *player_count)
{
static const char filename[] = "players.txt";
FILE *file = fopen(filename, "r");
if (file != NULL)
{
char line[128];
players = malloc(max_players * sizeof *players);
while (1) /* read until end of file */
{
players[*player_count] = malloc(sizeof(Player));
if (*player_count < max_players && fgets(players[*player_count]->name, sizeof players[*player_count]->name, file) != NULL)
{
fscanf(file, "%d", &players[*player_count]->played); // read played
fscanf(file, "%d", &players[*player_count]->won); // read won
fscanf(file, "%d", &players[*player_count]->lost); // read lost
fscanf(file, "%d", &players[*player_count]->tie); // read tie
fscanf(file, "%d", &players[*player_count]->points); // read points
fgets(line, sizeof line, file); // read new line
// increase player count
*player_count += 1;
}
else
{
break;
}
}
fclose(file);
}
else
{
return 0;
}
return 1;
}
Теперь у меня проблема с вызовом, передавая игроков в качестве справки, чтобы обновленные данные игроков отражались в конце вызова.
Ниже мой код вызова, который, я думаю, имеет проблему:
Player *players[MAX_PLAYERS] = { NULL };
int playerCount = 0;
load(players, MAX_PLAYERS, &playerCount);
Когда я отлаживаю код, массив игроков заполняется функцией, но когда он возвращается обратно, значение игроков по-прежнему равно нулю.
Любая помощь будет оценена.