CString Zeichen löschen

plonk

Mitglied
Hi,
ich bin C-Neuling und habe folgendes Problem:
ich möchte bei einem String das erste Zeichen löschen.

Gibt es einen String-Operator, der so etwas erledigt? Hab im Openbook von Pronix nichts entsprechendes gefunden.

Danke im vorraus!
 
Hm, ich sehe gerade, dass mein Posting nicht ganz korrekt war.
Tatsächlich möchte ich das erste Zeichen eines Char-Arrays löschen.

btw: ich benutze den GCC
 
Original geschrieben von rockbaer
char test[] = "blabla";

test[0] = '\0';

und jetzt ist das b gelöscht :p
Scherzkeks! :-)

@plonk: Kopier alle Chars in einer Schleife eine Position nach vorne.
Code:
for( int n=0; n < strlen( test ); ++n )
   test[n] = test[n+1];
 
Hallo zusammen!

Ich weiß, dass das folgende nicht sauber ist, aber gibt es nicht eine Möglichkeit, das in dieser Richtung zu bewerkstelligen?
Code:
char *a = (char*) calloc(10, sizeof(char)), *tmp;

a = "Hallo\0";
tmp = &a[0];
a = &a[1];
free(tmp);
Was gibt die free()-Funktion in diesem Fall an Speicher frei?
Sicher, bei der Methode würde der char-Array um ein Feld kleiner, aber mich würde einfach mal interessieren, ob es so eine Möglichkeit gibt, Speicher in Arrays freizugeben!

Gruß
Johannes
 
Code:
char *a = (char*) calloc(10, sizeof(char)), *tmp;
a = "Hallo\0";
tmp = &a[0];
a = &a[1];
free(tmp);

Wenn du einfach den neuen Stringanfang mit tmp anzeigst ist es "sauberer"

Free würden den ganzen Speicher denn du vorher mit calloc allociert hast freigeben, wie es sich gehört.
Nur ein Teil des Speichers freizugeben ist nicht sinnvoll, notfalls neu mit bekannter größe allocieren umkopieren und alten Speicher freigeben (PCs mit ihren Betriebssystemen haben heutzutage eh genug Speicher und das Speichermanagement ist auch okay).
 
Zurück