This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

array of pointers to arrays of pointers to string

Yes, the real problem is, I would like to write an easy to switch, multilingual menu. And I imagine, an array like that should work. But there seems to be some brain blocking in
1. How to define and initialize and
2. How to access finally the wanted string.

Ok, ommitting the string definition, the array of pointers to strings is easy.

char *lang[] = {string1,string2,...};

lang should be the pointer to this array.

If I define an array of such pointers, is it
char *langset[] = {lang1,lang2,...};
or
void *langset[] = {lang1,lang2,...};

and how to access

print(langset[langchoice][stringchoice]);???

Or am I just thinking too much and there is a much easier solution to the prob?

Any ideas appreciated

Parents
  • Your variable Menu has a bad declaration. Try:

    #include <stdio.h> 
    #include <reg52.h>
    
    typedef char     code* MenuItem;
    typedef MenuItem code* Menu;
    typedef Menu     code* Menus;
    
    typedef struct MenuCtrl_Tag{
      char code*    commands;
      unsigned char count;
      Menus         menus;
      unsigned char lines;
      void (code **dest)(void);
    } MenuCtrl;
    
    // german menu
    code MenuItem menuG[]={
      "Punkt eins",
      "Punkt zwei",
      "Punkt drei"
    };
    // english menu
    code MenuItem menuE[]={
      "point one",
      "point two",
      "point three"
    };
    // independant menu pointer
    // something like
    code Menu menusGE[]={
      &menuG,
      &menuE
    };
    
    code MenuCtrl root={
      "123\x1b",     // command chars
      3,
      &menusGE,       // strings
      2,
      NULL           // functions for now
    };
    
    void main()
    {
      TI = 1;                              //to make printf works in debugger
      printf( "%s\n", root.menus[1][1] );  //should be "point two"
      while( 1 ) ;
    }
    <\pre>
    
    
    
    
    

Reply
  • Your variable Menu has a bad declaration. Try:

    #include <stdio.h> 
    #include <reg52.h>
    
    typedef char     code* MenuItem;
    typedef MenuItem code* Menu;
    typedef Menu     code* Menus;
    
    typedef struct MenuCtrl_Tag{
      char code*    commands;
      unsigned char count;
      Menus         menus;
      unsigned char lines;
      void (code **dest)(void);
    } MenuCtrl;
    
    // german menu
    code MenuItem menuG[]={
      "Punkt eins",
      "Punkt zwei",
      "Punkt drei"
    };
    // english menu
    code MenuItem menuE[]={
      "point one",
      "point two",
      "point three"
    };
    // independant menu pointer
    // something like
    code Menu menusGE[]={
      &menuG,
      &menuE
    };
    
    code MenuCtrl root={
      "123\x1b",     // command chars
      3,
      &menusGE,       // strings
      2,
      NULL           // functions for now
    };
    
    void main()
    {
      TI = 1;                              //to make printf works in debugger
      printf( "%s\n", root.menus[1][1] );  //should be "point two"
      while( 1 ) ;
    }
    <\pre>
    
    
    
    
    

Children
No data