Struktur mit Zeiger auf char-Arrays



  • Hallo zusammen,

    ich benötige eine Struktur, in der ich 2 Zeiger auf Char-Arrays habe, die dynamisch wachsen können. Ich dachte mir, dass das so aussieht:

    struct
    {

    char *s1[]; //in z.B. s1[0] soll später ein String abgelegt werden
    char *s2[]; //in z.B. s2[0] soll später ein String abgelegt werden
    }test;

    Dann versuche ich den benötigten Speicherplatz bereitzustellen:
    test.s1[0]=malloc(...);
    test.s2[0]=malloc(...);

    Und stelle nun fest, dass beide Adressen gleich sind.
    Was mache ich falsch?

    Schon mal besten Dank.



  • Anmerkung:

    Das Problem scheint nicht malloc zu liegen, sondern grundsätzlich scheint

    &(test.s1) == &(test.s2) = wahr zu sein



  • Also so sollte das schon gehen (ungetestet) :

    typedef struct {
       char **s1;
       char **s2;
    } test;
    
    int main() {
       int i;
       test t;
    
       t.s1 = (char**)malloc(sizeof(char*) * 3);  // 3 C-Strings
       t.s1[0] = (char*)malloc(6);
       t.s1[1] = (char*)malloc(6);
       t.s1[2] = (char*)malloc(2);
       strcpy(t.s1[0], "Hello");
       strcpy(t.s1[1], "World");
       strcpy(t.s1[2], "!");
    
       for(i=0; i<3 ;i++)
          printf("t.s1[%i] = %s\n", i, t.s1[i]);
    
       return 0;
    }
    

Anmelden zum Antworten