Forum: Mikrocontroller und Digitale Elektronik itoa() - will noch nicht ganz


von funker (Gast)


Lesenswert?

Hi, ich möchte über UART integer zahlen als Zeichen ausgeben, die
funktion funktioniert zwar schon, allerdings muss ich immer genau
angeben wieviele Stellen die integer Zahl hat.
Ich bekomme nach "13" immer noch "Zeichenmist" übertragen, da ja
eigentlich nur test[0,1] benötigt wird. Ich will die Funktion aber
trotzdem variabel haben, was die Stellenanzahl der Integerzahl, die
umgewandelt werden soll, betrifft.

Maine itoa():

int i;
char test[20];
itoa(13,test,10);

for(i=0; i<=20;i++){
  transmit(test[i]);
  transmit('\012');
  _delay_loop_2(50000);
}

Vielleicht kann mir jemand schreiben, was nicht so ganz richtig dran
ist.

Danke

von Joerg Wunsch (Gast)


Lesenswert?

Kauf Dir 'n gutes C-Buch.  Ich empfehle nach wie vor gern den Urvater
(oder besser: die Urväter): Kernighan/Ritchie (auch K&R genannt),
``The C programming language''.

Bitte in Englisch, zumindest die erste deutsche Übersetzung war
grauenhaft.

Strings in C werden mit '\0' terminiert, Du darfst also nur bis
dorthin ausgeben.

char *cp;

for (cp = test; *cp; cp++)
  transmit(*cp),
transmit('\n');

Ah ja, das Kapitel über Pointer & Arrays wirst Du dann wohl auch noch
studieren müssen, um das Beispiel zu verstehen. :-))

Mit itoa() hat das übrigens alles nicht das Geringste zu tun...

von funker (Gast)


Lesenswert?

ok, ihr könnt es vergessen, sizeof und es geht

von funker (Gast)


Lesenswert?

ja, Buch + Lösungsbuch liegt vor meiner Nase :-)

von Joerg Wunsch (Gast)


Lesenswert?

Dann guck mal rein.  sizeof ist jedenfalls flasch.

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.