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);