Den letzten Buchstaben eines char* löschen
-
Ich brauch ein Funktion , die den letzten Buchstaben eines charpointers löscht, möglichts wenig spezielle funktionen von Windows, ich brauch das für ein anderes System
-
size_t len = strlen(mystring);
if(len > 0) mystring[len - 1] = '\0';
-
Ok es funktioniert jetzt danke
-
hmm das löscht das Element des Arrays aber nicht sondern setzt dessen Wert bloß auf das Terminierungszeichen ...
-
Wie willst du es denn anders machen? Es ist ja nicht garaniert, dass der Speicher auf dem Heap angelegt wurde...
-
Falls es sich um einen gültigen nullterminierten String handelt ist die Operation sauber.
-
Der string ist nullterminiert
Kann mann nicht vielleicht einen neuen String allokieren und ihn dann füllen und anstatt des letzten Buchstabens/Zeichens einfach eine null einfügen?
Ich wüsst wies geht aber nicht, ob strlen bis zu /0 liest oder vorher aufhört
-
strlen gibt dir die lenge des strings bis VOR dem Terminierungszeichen aus ...
-
RobthaR schrieb:
Der string ist nullterminiert
Kann mann nicht vielleicht einen neuen String allokieren und ihn dann füllen und anstatt des letzten Buchstabens/Zeichens einfach eine null einfügen?
Ich wüsst wies geht aber nicht, ob strlen bis zu /0 liest oder vorher aufhört
du kannst ja auch einfach alle felder durchzählen, in einen puffer schreiben, und erst wenn das nächste zeichen KEIN terminierungszeichen ist in den neuen string schreiben.
-
Da du hier im C++ Forum bist, schlag ich Folgendes vor:
std::string s = std::string(myVar); unsigned int length = s.length(); if(length>0) s = s.substring(0, length-1);
-
Was macht ihr hier für einen Aufstand? Der erste Vorschlag war richtig und ist völlig ausreichend.
-
Hast du völlig recht, allerdings hasse ich die C-Fragen im C++ Forum