Wskaźniki w strukturach

0

Witam!

Mój problem polega na tym, że nie bardzo wiem jak zadeklarować wskaźnik.

Mam takie tablice:

#define LEV 2 

const char *alarm1[][LEV] = { 
  {"funkcja1", "function1"}, 
  {"funkcja2", "function2"}, 
  {"funkcja3", "function3"} 
}; 

const char *alarm2[][LEV] = { 
  {"okno1", "window1"}, 
  {"okno2", "window2"}, 
  {"okno3", "window3"} 
}; 

const char *alarm3[][LEV] = { 
  {"drzwi1", "door1"}, 
  {"drzwi2", "door2"}, 
  {"drzwi3", "door3"} 
}; 

oraz tablicę

AL_TABLE const al_tab[] = { 
  {"opis1", alarm1}, 
  {"opis2", alarm2}, 
  {"opis3", alarm3} 
}; 

jak powinna wyglądać deklaracja AL_TABLE poniżej, co powinno być w wykropkowanym miejscu?

typedef struct { 
  char *opis_msg; 
  .............??? ;  //tutaj nie wiem co powinno być próbowałem char **alarm_msg; 
} AL_TABLE; 

Próbowałem poprzez podwójny wskaźnik: char **alarm_msg; ale to nie działa, działa w przypadku gdy pierwsza (druga oraz trzecia) tablica ma jeden wymiar lub gdy zadeklaruje alarm1[LANG_LEV] (alarm2[LANG_LEV], alarm3[LENG_LEV]), ale jak wtedy odwołać się do poszczególnych pól.

Odwołanie działające w przypadku gdy pierwsza (druga, trzecia) tablica ma jeden wymiar:

char *napis; 
unsigned char i, idx; 

idx = 1; 
i = 1; 
napis = al_tab[idx].alarm_msg[i]; 

Chciałbym dostać napis albo polski albo angielski, ale nie bardzo wiem jak to zrobić. W załączniku rysunek.
Proszę o pomoc lub jakąś podpowiedź.

Pozdrawiam

1
typedef const char *ALARM[][LEV];
typedef struct { 
  char *opis_msg;
  ALARM alarm;
} AL_TABLE;

Z tym że może trochę uprościć jeżeli zadeklarujesz to tak:

typedef struct
  {
   const char *Tb[LEV];
  } PARA;

const PARA alarm1[] = { 
  {"funkcja1", "function1"}, 
  {"funkcja2", "function2"}, 
  {"funkcja3", "function3"} 
}; 

...

const struct { 
  char *opis_msg;
  const PARA * alarmy;
  unsigned alarmysize;
} al_tab[] = { 
  {"opis1", alarm1, sizeof(alarm1)/sizeof(*alarm1) }, 
  {"opis2", alarm2, sizeof(alarm2)/sizeof(*alarm2) }, 
  {"opis3", alarm3, sizeof(alarm3)/sizeof(*alarm3) } 
};

W drugim wariancie podałem podalem rozwiązanie problemu który napotkasz w tym twoim. Nic nie stoi na przeszkodzie aby zastosować to samo w twoim.

0

Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1