多くの組み合わせを試しましたが、実際には何も機能しませんでした。長くなってしまったので、この記事を書くことにしました。
構造体へのポインターの配列が必要なだけなので、後でアドレスを交換することで簡単に並べ替えることができます。ファイルからデータを取得して配列に書き込む関数があります。残念ながら、関数の外でこのデータを読み取ることはできません。
私の最後の試み(ファイル操作は問題ではないため、削除しました):
Header.h:
#pragma once
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int32_t year;
uint16_t month;
uint16_t day;
} Date;
typedef struct {
char name[16];
Date date;
uint32_t number;
} Player;
size_t readData(Player** players);
ソース.c:
#include "Header.h"
size_t readData(Player** players) {
players = NULL;
players = realloc(players, sizeof(Player*) * 1);
players[0] = malloc(sizeof(Player));
strcpy(players[0]->name, "asd");
printf("$ %s\n", players[0]->name);//OK
return 1;
}
int main() {
Player **players = NULL;
uint32_t elemCount, i;
elemCount = readData(players);
printf("> %s", players[0]->name);//BUM - ERROR!
return 0;
}
私は Visual Studio Community 2015 を使用しています。C でコーディングするのはそれほど重要ではないことはわかっていますが、ソリューションを構成することができましたが、それは問題ではないようです。
私は助けてくれてとても感謝しています。それでも、自分のコードのリメイクとして見たいと思っています。このような StackOverFlow に関する質問に対する他の回答をいくつか試しましたが、役に立ちませんでした。