реклама на сайте
подробности

 
 
> Указатель на строку в структуре, или даже указатель на указатель
011119xx
сообщение Aug 3 2011, 11:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
011119xx
сообщение Jun 8 2012, 06:34
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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
     }
....
}

Прошу подсказки специалистов как правильно сделать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 19:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016