Forum: Mikrocontroller und Digitale Elektronik Umwandlung int in string


von unknown (Gast)


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!

von Daniel Jelkmann (Gast)


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

von Peter D. (peda)


Lesenswert?

"Das sollte dann klappen"

Nein, es müssen 7 Bytes sein.


Peter

von Daniel Jelkmann (Gast)


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

von unknown (Gast)


Lesenswert?

Danke, jetzt hat es geklappt!

von Peter D. (peda)


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

von Daniel Jelkmann (Gast)


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

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
Noch kein Account? Hier anmelden.