In einen Pointer kann man auch schreiben, z.B. wenn du ihm einen Wert zuweist (dann änderst du den Wert des Pointers) bzw. wenn der Pointer auf etwas zeigt, dann kannst du mit *ptr (der * ist hierbei der Dereferenzierungsoperator) den Inhalt, auf den der Pointer zeigt, ändern.
Code:char test1[]="Hallo 1"; char test2[]="Hallo 2"; char *ptr=NULL; ptr=test1; //Wert des Pointers geändert *ptr='B'; //test1 hält jetzt "Ballo 1" ptr=test2; *ptr='J';Passt soweit denke ich. Allerdings wirst du dich jetzt sicherlich nicht das letzte Mal fragen, was jetzt ein Pointer, was ein Array ist und wieso da ein & bzw. ein * davor muss... das ganze ist doch ziemlich verwirrend
strtok() kann genau deswegen auch nur auf char arrays angewendet werden, da es lt. manpage die gesuchten Zeichen durch Null-Terminatoren ersetzt und nur einen Pointer auf das erste Zeichen des Strings bzw das erste Zeichen nach dem neu gesetzen Null-Terminator liefert.
Logisch ist dadurch auch, das, wenn man diesen Fehler begeht, ein Segfault produziert wird, da ja nur ein Pointer und keine Daten da sind. (Wo nichts ist sollte man auch nichts reinschreiben, und wenn nur der Anfang des Strings bekannt ist, schreibt man viel zu leicht einen längeren String rein und würde dadurch in "fremden" Speicherbereichen landen)
Soweit richtig erklärt? Wenn ja hab ichs wirklich geblickt
Lesezeichen