# CString Zeichen löschen



## plonk (18. April 2004)

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!


----------



## rockbaer (18. April 2004)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/vcrefcstringdelete.asp


----------



## plonk (18. April 2004)

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


----------



## rockbaer (18. April 2004)

char test[] = "blabla";

test[0] = '\0';

und jetzt ist das b gelöscht


----------



## Kachelator (18. April 2004)

> _Original geschrieben von rockbaer _
> *char test[] = "blabla";
> 
> test[0] = '\0';
> ...


 Scherzkeks!  

@plonk: Kopier alle Chars in einer Schleife eine Position nach vorne.

```
for( int n=0; n < strlen( test ); ++n )
   test[n] = test[n+1];
```


----------



## plonk (18. April 2004)

Jo,  das isses  

 thx!


----------



## revelation (18. April 2004)

Hallo zusammen!

Ich weiß, dass das folgende nicht sauber ist, aber gibt es nicht eine Möglichkeit, das in dieser Richtung zu bewerkstelligen?
	
	
	



```
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


----------



## Kachelator (18. April 2004)

Oh, lass das lieber bleiben.


----------



## basd (18. April 2004)

```
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).


----------



## revelation (18. April 2004)

Hat mich auch nur interessiert... 

Machen würde ich das bestimmt nicht!

Gruß
Johannes


----------

