|
Указатель на строку в структуре, или даже указатель на указатель |
|
|
|
Aug 3 2011, 11:18
|

Местный
  
Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544

|
Нужна помощь опытных специалистов. Код такой: Код typedef struct { int x_numicons; int y_numicons; int iconnumber[10]; } imenu_icons_t;
typedef struct { imenu_icons_t *menu_idle; imenu_icons_t *menu_active; imenu_icons_t *menu_icon; char *menu_text[10]; } imenu_t;
imenu_icons_t main_icon = {1, 1, {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}};
imenu_icons_t main_idle = {10, 1, {12, 13, 14, 15, 16, 17, 18, 19, 20, 21}};
imenu_icons_t main_active = {10, 1, {22, 23, 24, 25, 26, 27, 28, 29, 30, 31}};
const char *main_text[10] = {"STR1", "STR2", "STR3", "STR4", "STR5", "STR6", "STR7", "STR8", "STR9", "STR10"};
imenu_t mainmenu = {&main_idle, &main_active, &main_icon, &main_text};
int icon_menu(imenu_t *pmenu) { unsigned char current = 0, i; char *ptr;
// В функции показано не все, поэтому пусть не смущает ее бессмысленность
for(i = 0; i < entries; i++) { ptr = (char *)pmenu->menu_text[i]; }
return current; }
unsigned char ic;
void main(void) { ic = icon_menu(&mainmenu); } беспокоит строка: ptr = (char *)pmenu->menu_text[i]; так как сейчас она указывает не туда куда хотелось бы. Вопрос в том как это правильно сделать, т.е. чтобы указатель указывал на строку?
Сообщение отредактировал 011119xx - Aug 3 2011, 11:20
|
|
|
|
|
 |
Ответов
|
Jun 8 2012, 06:34
|

Местный
  
Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544

|
Снова возвращаюсь к данной теме, так как потребовалось усложнить интерфейс введением поддержки 2-х языков. Соответственно, код используемый ранее требует доработки: Код ... typedef struct { imenu_icons_t *menu_idle; imenu_icons_t *menu_active; imenu_icons_t *menu_icon; const char **menu_text; } imenu_t; ..... const char *main_text[10] = {"STR1", "STR2", "STR3", "STR4", "STR5", "STR6", "STR7", "STR8", "STR9", "STR10"};
imenu_t mainmenu = {&main_idle, &main_active, &main_icon, main_text};
..... int icon_menu(imenu_t *pmenu) { unsigned char current = 0, i; const char **ptr = pmenu->menu_text;
for(i = 0; i < entries; i++) { print((char *)(ptr + i)); } .... } .... В первую очередь это: Код const char *main_text[10] = {"STR1", "STR2", "STR3", "STR4", "STR5", "STR6", "STR7", "STR8", "STR9", "STR10"}; меняю на это: Код const char *main_text[2][10] = {{"STR1_EN", "STR2_EN", "STR3_EN", "STR4_EN", "STR5_EN", "STR6_EN", "STR7_EN", "STR8_EN", "STR9_EN", "STR10_EN"}, {"STR1_RU", "STR2_RU", "STR3_RU", "STR4_RU", "STR5_RU", "STR6_RU", "STR7_RU", "STR8_RU", "STR9_RU", "STR10_RU"}}; А далее в общем-то запутался. По идее вот это: Код typedef struct { imenu_icons_t *menu_idle; imenu_icons_t *menu_active; imenu_icons_t *menu_icon; const char **menu_text; } imenu_t; надо тоже менять, правда не пойму как. Функцию, использующую строки меняю на: Код int icon_menu(imenu_t *pmenu) { unsigned char current = 0, i, language; const char **ptr = pmenu->menu_text; //нужно править и как-то использовать language
for(i = 0; i < entries; i++) { print((char *)(ptr + i)); //нужно править и как-то использовать language } .... } Прошу подсказки специалистов как правильно сделать.
|
|
|
|
Сообщений в этой теме
011119xx Указатель на строку в структуре Aug 3 2011, 11:18 Палыч Цитата(011119xx @ Aug 3 2011, 15:18) как ... Aug 3 2011, 11:39 ISK2010 Лучше работать с указателем на массив указателей н... Aug 3 2011, 11:40 Dog Pawlowa Цитата(ISK2010 @ Aug 3 2011, 14:40) Лучше... Aug 3 2011, 13:02 011119xx Проблема решается так:
Кодtypedef struct
{
int ... Aug 4 2011, 10:27 Палыч Цитата(011119xx @ Aug 4 2011, 14:27) Проб... Aug 4 2011, 11:05 ar__systems Цитата(011119xx @ Aug 4 2011, 06:27) Проб... Aug 5 2011, 16:23 011119xx Keil ваш вариант не устраивает. А вот такой устраи... Aug 5 2011, 02:45 011119xx Окончательный вариант принятый к использованию:
К... Aug 8 2011, 02:44 sergeeff Цитата(011119xx @ Aug 8 2011, 06:44) Окон... Aug 8 2011, 07:50  011119xx Цитата(sergeeff @ Aug 8 2011, 13:50) Прос... Aug 8 2011, 08:33   sergeeff Цитата(011119xx @ Aug 8 2011, 12:33) Так ... Aug 8 2011, 08:47   Палыч Цитата(011119xx @ Aug 8 2011, 12:33) Keil... Aug 8 2011, 08:52 XVR Вот тут print((char *)pmenu->menu_text[current... Aug 8 2011, 07:46 sergeeff Как пить дать человек компилирует С++`ом. Тогд... Aug 8 2011, 10:14 011119xx Цитата(sergeeff @ Aug 8 2011, 16:14) Как ... Aug 8 2011, 10:50 ar__systems Цитата(sergeeff @ Aug 8 2011, 06:14) Как ... Aug 8 2011, 11:55  sergeeff Цитата(ar__systems @ Aug 8 2011, 15:55) Д... Aug 8 2011, 12:17   ar__systems Цитата(sergeeff @ Aug 8 2011, 08:17) Это ... Aug 8 2011, 13:07    Палыч Цитата(ar__systems @ Aug 8 2011, 17:07) А... Aug 8 2011, 13:18   XVR Цитата(sergeeff @ Aug 8 2011, 16:17) Это ... Aug 8 2011, 16:37   011119xx Цитата(sergeeff @ Aug 8 2011, 18:17) Это ... Aug 9 2011, 02:52    sergeeff Цитата(011119xx @ Aug 9 2011, 06:52) Вы K... Aug 9 2011, 13:14     MrYuran Цитата(sergeeff @ Aug 9 2011, 17:14) 2. Н... Jun 8 2012, 06:53      011119xx Цитата(MrYuran @ Jun 8 2012, 11:53) Сдела... Jun 8 2012, 09:32 sergeeff Скажем спасибо людям, написавшим gcc, что оповещаю... Aug 8 2011, 20:10 Genadi Zawidowski Кодtypedef struct
{
int x_numicons;
i... Aug 9 2011, 05:06 011119xx Работает вот так:
Кодint icon_menu(imenu_t *pm... Jun 8 2012, 10:49 XVR Кодtypedef struct
{
imenu_icons_t *menu_idle; ... Jun 9 2012, 11:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|