while schleife funktioniert nicht (s muss änderbarer Ivalue sein)
-
Okay das mit der Schleife hab ich gelöst bekommen. Hab eine kleine seperate Funktion geschrieben.
Jetzt bleibt nur noch das Problem mit dem "Zeichen an Position löschen". Probiere deine Idee gleich mal aus @Wade1234@Wade1234 hat geklappt, danke
-
ich finde, dass du nicht mit zeigern arbeiten solltest, solange du nicht mit arrays arbeiten kannst.
-
Dieser Beitrag wurde gelöscht!
-
@Wade1234 sagte in while schleife funktioniert nicht (s muss änderbarer Ivalue sein):
ich finde, dass du nicht mit zeigern arbeiten solltest, solange du nicht mit arrays arbeiten kannst.
lool
-
void myStrChrDeleteByPosition(char *s,int i) { for(char *p=s+i;*s=s[s>=p];++s); }
-
@Platinumer sagte in while schleife funktioniert nicht (s muss änderbarer Ivalue sein):
muss ich also den definierten string, char [] = "string" anders schreiben um ihn ändern zu können?
Du kannst jederzeit einen weiteren Zeiger auf das Array zeigen lassen.
So wie du es versuchst, würde die Information über den Anfang des Arrays verloren gehen.
-
@Wutz: Nicht sehr effizient für lange Strings mit hohem Index (aber dafür konstant je String ;- ).
-
@Sarkast sagte in while schleife funktioniert nicht (s muss änderbarer Ivalue sein):
Was du wirklich brauchst, ist überdies https://man.cx/strcpy
strcpy()
hat für sich überlappende Speicherbereiche UB, ist also für das "Löschen" in-place nicht geeignet.
-
@Swordfish Du hast völlig recht, die ganze Familie mag kein Overlapping.
-
@Sarkast sagte in while schleife funktioniert nicht (s muss änderbarer Ivalue sein):
@Swordfish Du hast völlig recht, die ganze Familie mag kein Overlapping.
memmove verträgt es.