string array



  • leider gibt es ja keine suchfunktion mehr, sonst hätt ich das problem schon längst gelöst 🙂 also ich brauche ein string array. in diesem string array möchte ich max. 10 strings abspeichern, die max. 12 zeichen lang sind. leider bekomm ich das allokieren des speichers mit malloc und sizeof für ein echtes string array nicht mehr hin. könnte mir da mal jemand auf die sprünge helfen?? danke schonmal!



  • char* strings[10];
           int n;
           for(n=0;n<10;n++)
           {
            strings[n]=(char*) malloc(sizeof(char)*13);
           }
    

    sizeof(char) is ja eigentlich sinnlos aber ne angewohnheit 😃



  • japro war schneller...

    [ Dieser Beitrag wurde am 24.04.2002 um 12:05 Uhr von Fux editiert. ]



  • @Fux warum hast du deine nicht gelassen hat ja auch gestimmt und dürfte schneller gewesen sein?



  • Sie war auch noch falsch, aber so ehrlich wollte ich nicht sein :D:D



  • vielen dank für die rasche antwort!

    edit: vieleicht könnte der beitrag in's faq verschoben werden?

    [ Dieser Beitrag wurde am 24.04.2002 um 12:24 Uhr von nil editiert. ]



  • Jo, FAQ ist ne gute Idee!

    Hier noch ein paar Zusaetzliche sachen:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    typedef char** stringArray;
    stringArray MallocStringArray(size_t SizeOfOneString, size_t StringCount)
    {
      char** t=malloc(StringCount*sizeof(char*));
      size_t i;
      for(i=0;i<StringCount;++i)
        t[i]=malloc(SizeOfOneString);
      return t;
    }
    
    void FreeStringArray(stringArray StringArray, size_t StringCount)
    {
      size_t i;
      for(i=0;i<StringCount;++i)
        free(StringArray[i]);
      free(StringArray);
    }
    
    int main()
    {
        stringArray s;
        s=MallocStringArray(100,10);
        strcpy(s[1],"Hallo Welt");
        puts(s[1]);
        FreeStringArray(s,10);
        return 0;
    }
    

    Alternativ kann man es noch statisch machen:

    char arr[10][100];