String Puffer für atoi löschen

Gast #1621053
Hallo,
ich sende ASCII Zeichen via RS232. Diese Zeichen werden in einem Puffer 
gespeichert. Und anschließend mittel atoi in einen Integer Wert 
umgewandelt. Nur wie lösche ich nach dem Umwandeln den Buffer. Also was 
schreibe ich da am besten für einen Wert an jeden index, damit beim 
nächsten Auswerten, wenn ich weniger Zeichen sende da nicht die Zeichen 
vom letzten mal mit interpretiert werden? Kann ich da einfach eine 
Dezimal 0 reinschreiben, oder wird diese von atoi auch als irgendetwas 
interpretiert?

Danke
Gast #1621068
Ein String in C ist per Definition Null-Terminated, d.h. er hat am Ende 
ein Zeichen mit dem Wert \0. Alles, was danach kommt, interessiert atoi 
nicht mehr.

Das bedeutet aber auch, daß du diese \0 ans Ende deiner Zeichenkette 
anhängen musst, sonst funktioniert atoi nicht.

Oliver
#1621477
Du versuchst ein Problem lösen, was es garnicht gibt.

Du mußt ja irgendwie wissen, wann der String zuende ist, erst dann 
kannst Du ihn in eine Zahl umwandeln. Ansonsten würdest Du nur einen 
Teil der Ziffern auswerten und einen viel zu kleinen Wert erhalten.

Eine Möglichkeit ist, das CR oder NL am Ende zu erkennen und als ein 
NULL-Byte abzuspeichern. Und voilà, der alte String ist wie von 
Geisterhand verschwunden.

Du mußt also überhaupt nichts extra löschen.


Peter
#1621493
Oliver schrieb:
> Das bedeutet aber auch, daß du diese \0 ans Ende deiner Zeichenkette
> anhängen musst, sonst funktioniert atoi nicht.

Nö, muß nicht. Muß nur keine Ziffer sein:

"Die Zeichenkonvertierung bricht beim ersten, nicht-interpretierbaren 
Zeichen
ab."


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.