mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Umwandlung int in string


Autor: unknown (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich möchte einen int-Wert in einen String umwandeln, was ist hier
falsch?

int wert;
char string[]={};

wert = 345;
itoa(wert,string,10);


Bitte um schnelle Hilfe, Danke im Voraus!

Autor: Daniel Jelkmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Du musst Speicher für den Buffer (in Deinem Fall string) bereitstellen,
und zwar soviel, dass der konvertierte Wert darin Platz hat.
Bei itoa muss der Benutzer dafür sorgen, dass der Buffer ausreichend
groß ist.

Also etwa:

int wert = 345;
char string[4];
itoa(wert,string,10);

Das sollte dann klappen (ohne es jetzt ausprobiert zu haben).

Bye
  Daniel Jelkmann

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Das sollte dann klappen"

Nein, es müssen 7 Bytes sein.


Peter

Autor: Daniel Jelkmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Peter,

erklär mal bitte warum das 7 Bytes sein sollen...
Soweit ich weiss muss der Buffer nur ausreichend groß sein, dass der
konvertierte String da hineinpasst. Das wären für mich die drei Zeichen
'3', '4', '5' und das Nullzeichen am Ende '\0'...

MfG
 Daniel Jelkmann

Autor: unknown (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, jetzt hat es geklappt!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Daniel

Er wird ja wohl nicht nur "345" ausgeben wollen, sonst hätte ers ja
direkt in den String schreiben können.

Und die größte mögliche Zahl (int) ist: "-32768" + 0-Byte = 7 Bytes.


Peter

Autor: Daniel Jelkmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter:

Das macht natürlich Sinn ;) Soweit hatte ich garnicht gedacht, ich hab
nur diesen konkreten Fall gesehen... boing Danke.
Aber streng genommen kann ein int ja auch 32 Bit haben, es ist ja
nichts über die Maschine gesagt für die das kompiliert wird. Ja ich
weiss, ziemlich unwahrscheinlich hier in einem µC-Forum...

MfG
  Daniel Jelkmann

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.