Warum Absturz bei Zeichenkettenänderung?
-
Hi,
warum bekomme ich einen Absturz des Programms wenn ich versuche bei einer Zeichenkette etwas zu ändern?
char* x = "Text"; x[1] = 'a'; cout << x;
Bei der zweiten Zeile, bei der ich den Buchstaben e des Wortes "Text" durch den Buchstaben a ersetzen will, entsteht der Absturz.
Wie kann ich das Zeichen ohne Absturz ändern?
-
-
x ist ein Zeiger auf char.
"Text" ist ein Stringliteral, das irgendwo im Speicher steht. Und es ist nur lesbar.Besser wäre
const char* x = "Text";
, dann würde gleich der Compiler meckern.
Du willst aber
char x[] = "Text";
Dann hast du ein Array und du darfst es auch beschreiben.
Zu cout kann ich leider nichts sagen. Das habe ich bei C noch nicht gesehen.
-
Nehme einen ausreichend grossen Textarray mit char text[20] oder so. Dann kannst du nicht nur ändern, sondern ggfs. auch erweitern. Gehört zu den Grundlagen von C und muss nicht unbedingt erläutert werden. Erst danach probierst du dich an Zeigern!
-
char y[] = "Text"; char *x = y; x[2] = 's';
geht auch