Problem mit strtok
-
Hallo
char* String = "5+6+7+8-6-4"; const char Trennzeichen[] = "+-*/"; char* Token = strtok(String,Trennzeichen);
Wenn ich mein Programm mit diesem Code ausführe, stürzt es wegen
einer "Zugriffsverletzung beim Schreiben" ab.
Wenn ich aber anstattchar* String
char String[]
schreibe,läuft es ohne Probleme.
Das ist doch beides genau das gleiche. An was liegt das?
Danke
-
char* String = "5+6+7+8-6-4";
weißt ein read-only string zu. strtok muss aber schreiben können, da strtok damit sich die Position merkt, wo was geparst wurde. Mit
char String[] = "5+6+7+8-6-4";
wird ein Arrays der Größe strlen("5+6+7+8-6-4") + 1 angelegt und mit diesem String initialsiert, es ist kein read-only Speicher und funktioniert problemlos mit strtok.
-
Okay Danke erstmal.
Jetz hab ich das gleiche Problem nur mit Token.void Auswerten(char String[]) { char Trennzeichen[] = "+-*/"; char* Token; Token = strtok(String, Trennzeichen); /* erstes Token ermitteln */ while(Token != NULL ) { Token = strtok(NULL, Trennzeichen); /* weitere Token ermitteln */ } //... }
Was hab ich hier falsch gemacht?
-
wir rufst du
Auswerten
auf? Bestimmt mit einem konstanten String.man strstr schrieb:
BUGS
Avoid using these functions. If you do use them, note that:These functions modify their first argument.
These functions cannot be used on constant strings.