mikrocontroller.net

Forum: Compiler & IDEs String Puffer für atoi löschen


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lord Ziu (lordziu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dezimale 0. Am besten mit memset, geht IMHO am schnellsten.
memset(buffer, 0, sizeof(datentyp) * bufferlaenge);

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.