Teile aus String
-
Hi, ich möchte mir Teile aus einem String holen.
Wie mach ich das am besten und was für Arten gibt es noch einmal?
Ich wusste das vor etwas längerer Zeit mal. hab es aber nun wieder vergessen...
"Hallo" MsgBox("Ha") MsgBox("llo")
-
Ein String ist nur ein Array von Zeichen - mit einem '\0' als Endemarke. Wenn du einen Teil herausholen willst, kannst du ihn in ein anderes Array kopieren (und eine neue Ende-Marke anhängen). Alternativ könntest du den Ursprungsstring auch zerschneiden:
char text[] = "hallo"; MsgBox(text+2);//"llo" text[2]='\0';MsgBox(text);//"ha" - Achtung - damit zerstörst du dauerhaft den String-Inhalt
-
Stimmt, das war das mit diesem +...
Danke
"Hallllloooo"
Also ist "lllloooo" = string + 3
und "loooo" = string + 6
?
-
Der Dritte schrieb:
"Hallllloooo"
Also ist "lllloooo" = string + 3
und "loooo" = string + 6
?*nachzählt* Ja
-
hmm oder:
const char* string = "Das ist mein Test"; printf("Ab 7. Stelle %s", &string[6]); assert(string[0] == 'D'); printf("Ab 2. Stelle %s", &string[1]);
...
-
Vielen Dank
Um die beiden ersten Zeichen zu bekommen, muss ich den ganzen String kaputtmachen?
oder funktioniert auch:
"Hallo"
string - 3?
-
Nein, das funktioniert nicht. Du hast einen Zeiger, der auf das erste Zeichen deines Strings zeigt - alles von dort bis zum ersten '\0' wird dem String zugeordnet. (und wenn du von der Ausgangsposition zurück gehst, landest du in Bereichen, die von irgendwem mit irgendwelchen Werten gefüllt wurden.
Um Teile am Ende des Strings abzuschneiden, bleibt dir nichts anderes übrig, als (a) dort eine neue Stringende-Marke reinzuschreiben oder (b) den für dich relevanten Teil des String in ein neues Array zu kopieren.
-
guck dir einfach mal strncpy(dest, &source[pos_begin], pos_end - pos_begin) an
<string.h> ist der nötige Header ...