String mit Variabler länge definieren



  • Hoi zusammen,

    wie kann ich mit ANIS-C-mitteln einen Variablen String definieren ?

    char Test[Var]; <- dies ist ja nach ANSI-definition nicht möglich, aber es muss doch eine Möglichkeit geben das zu "ertricksen", oder ?



  • Tag,

    Ich vermute mal du willst den Speicher für den String zur Laufzeit anfordern.
    Das geht mit malloc und derivaten.

    /*---------- snip --------- */
    int size=10;
    char *str;
    str=malloc(size);
    /*str hat nun platz fuer 10 zeichen wobei das letzte immer '\0' wird sodass du */
    /*nur 9 hineinschreiben solltest*/
    /*---------- snap --------- */
    


  • Perfekt, genau das hab ich gesucht, danke 🙂



  • Tag,

    Etwas wichtiges noch. Speicher den du anforderst musst du wieder freigeben sonst gibts memleaks. Das geht mit free().

    /*-------- snip -------*/
    char *str;
    str=malloc(10);
    if(str==NULL)
      /*errorhandling*/
    free(str);
    /*-------- snap -------*/
    


  • Noch ein kleiner Tip - du kannst dich nicht drauf verlassen, dass ein char immer genau ein Byte lang sein wird. Das ist momentan zwar so, aber wenn ISO 10646-1 (Unicode) erstmal vollständig eingeführt ist, würde ich mich da nicht mehr darauf verlassen. Das heißt, wirklich portabel wäre

    char *str; 
    str=malloc(10 * sizeof(char)); 
    if(str==NULL) 
      /*errorhandling*/ 
    free(str);
    

Anmelden zum Antworten