String loeschen

Gast #1289799
Hallo,

ich habe ein

char Buffer[120];


diesen schreibe ich einmal ganz voll (120) zeichen.
und beim zweiten mal nur bis zu haelfte. (60)

jetzt ist der aber gemischt, die ersten 60 zeichen sind die
neuen und die zweiten 60 zeichen sind die alten.

gibt es eine moeglichkeit das wieder zurueck zu setzen
das Buffer nur noch 60 zeichen lang ist und die letzten 60 leer sind
als ob ich nur 60 zeichen in buffer geschrieben haette?
#1289807
Simon schrieb:
> Hallo,
>
> ich habe ein
>
> char Buffer[120];
>
>
> diesen schreibe ich einmal ganz voll (120) zeichen.
> und beim zweiten mal nur bis zu haelfte. (60)
>
> jetzt ist der aber gemischt, die ersten 60 zeichen sind die
> neuen und die zweiten 60 zeichen sind die alten.
>
> gibt es eine moeglichkeit das wieder zurueck zu setzen
> das Buffer nur noch 60 zeichen lang ist und die letzten 60 leer sind
> als ob ich nur 60 zeichen in buffer geschrieben haette?

Jeder String hat in C immer ein 0-Byte an der letzten Stelle. Damit wird 
das tatsächliche Stringende markiert. Alle stringverarbeitenden 
Funktionen halten sich an diese Konvention.
Um einen String zu löschen, genügt es daher, wenn du dort, wo du das 
Stringende haben möchtest ein 0-Byte hinschreibst.

Schreibs aber so

  Buffer[x] = '\0';
Gast #1289937
Also selbst das funzt nicht so wie ich das will.

die zeichen sind nach wie vor vorhanden.


Ich hab mal folgendes gemacht:
for (i = 0; i <= 75; i++) {Buffer[i] = 'X'; }

und siehe da, der Buffer enthaellt danach an den stellen die eigentlich 
weg sein sollen ein X.

Da muss es eine andere moeglichkeit geben.

Wenn ich den Buffer erstelle und sofort danach den per uart oder ans LCD 
sende, so wird nichts angezeigt.
habe ich den Buffer aber einmal voll geschrieben. so bekomme ich die 
Zeichen da drinne nicht mehr raus, nur ueberschreiben kann ich die noch
#1289942
Simon schrieb:

> und siehe da, der Buffer enthaellt danach an den stellen die eigentlich
> weg sein sollen ein X.
>
> Da muss es eine andere moeglichkeit geben.

Was willst du denn außer überschreiben noch machen? Den SRAM aus dem µC 
rausbauen? Woran erkennt deine Software wie viele Zeichen im String 
sind?
Gast #1289987
zum rücksetzen eines buffers nehm ich meist dann buffer[0] = '\0';
damit ist für alle nachfolgenden stringfunktionen das ding leer
egal was dahinter drinsteht

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.