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
Dezimale 0. Am besten mit memset, geht IMHO am schnellsten.
1 | memset(buffer, 0, sizeof(datentyp) * bufferlaenge); |
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
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.