Witam
piszę program, w którym tworzę następujące struktury:
typedef struct Card
{
char color;
int face;
}CardT;
typedef struct Player
{
char side;
Card *card;
}PlayerT;
typedef struct Deal
{
Player *Gracze;
int PointsNS;
int PointsEW;
}DealT;
w funkcji main inicjalizuję je poprzez funkcję
void InitStruct(DealT *Rozdanie)
{
Rozdanie->Gracze = (PlayerT*)malloc(sizeof(PlayerT) * PLAYERS);
for (int i = 0; i < 4; i++)
{
Rozdanie->Gracze[i].side = '\0';
Rozdanie->Gracze[i].card = (CardT*)malloc(sizeof(CardT) * FACE);
for (int j = 0; j < 14; j++)
{
Rozdanie->Gracze[i].card[j].color = 'A'+j;
Rozdanie->Gracze[i].card[j].face = 1+j;
printf("%c%d ", Rozdanie->Gracze[i].card[j].color, Rozdanie->Gracze[i].card[j].face);
}
printf("\n");
}
}
Następnie w funkcji, która operuje na tej strukturze próbuję wczytać dane z pliku i przypisać je do odpowiednich pól
void WczytajRozdanie(DealT *Rozdanie)
{
char temp[3] = { '\0' };
char linia[LINE_SIZE] = { '\0' };
FILE *FileT = fopen("C:\\Users\\GONSKABALBINKA\\Desktop\\rozdanie.txt", "r");
if (Rozdanie == NULL)
{
printf("Nie mozna otworzyc pliku\n");
return;
}
while (fgets(linia, LINE_SIZE, FileT) != NULL)
{
for(int i=0;i<PLAYERS;i++)
{
Rozdanie->Gracze[i].side = linia[0];
for (int j = 0, len =2 ; j < FACE; j++, len += 3)
{
sprintf(temp, "%2s", linia + len);
Rozdanie->Gracze[i].card[j].color = temp[1]; // W tym miejscu wyrzuca mi wyjątek
Kiedy próbuję przypisać dane do odpowiednich pól otrzymuję komunikat: Zgłoszono nieobsługiwany wyjątek: naruszenie dostępu do odczytu.
Gdzie może być błąd
Shalomj < FACE
a w innym miejscu14
i znów nie wiadomo czy to są te same wartości.ShalomRozdanie->Gracze[i].side = linia[0]; // tutaj wszystko działa bez zarzutu