Wo ist das Problem? Einzelene Buchstaben eines Strings ändern!
-
Hallo ersteinmal!
Habe folgendes Problem: (Auszug)
char* satz = "Drei Chinesen mit dem Kontrabass"; i=0; // Programmsteuerung // ----------------- printf("%s\n", satz); laenge = strlen(satz); //satzaendern(satz, laenge); do { if (*satz == 'r') *satz ='l'; else if (*satz == 'R') *satz ='L'; else if (*satz == '\n') exit(1); satz++; ++i; }while(i<laenge); printf("%s\n", satz);
Was mache ich falsch? Er will absolut nicht den String ändern!
Besten Dank schon einmal.
Gruß
JoeF
-
benutz lieber den [] operator, anstelle den Pointer satz zu verändern, ansonsten sorgt das letzte printf für ein unangenehmes Ergebniss!
-
zum einen solltest du "string" selbst nicht veraendern, sondern auf die einzelnen zeichen ueber indizes zugreifen: string[i]='r'
JoeF schrieb:
Was mache ich falsch? Er will absolut nicht den String ändern!
Wenn du den string so definierst ist er auch unveraenderbar.
Stattdessen kannst du das so machen:
char *string=malloc(50);
strncpy(satz,"Drei Chinesen mit dem Kontrabass",50);
-
Warum ist der String unveränderbar?
Achja und das letzte printf konnte eh noch nicht funktionieren, da der Pointer nicht mehr auf den Anfang zeigt!
Gruß
JoeF
-
Weil er ein String-Literal ist.
-
okay muß ich mir wohl merken.
Besten Dank für die Infos
Gruß
Joef
-
JoeF schrieb:
Warum ist der String unveränderbar?
Wenn du einen String so definierst ist er konstant.
-
Also wenn ich ihn verändern möchte, muß ich mit einer Kopie arbeiten oder gleich in einem Arry speichern, damit ich ihn ändern kann.
Gruß
JoeF