Forum: Compiler & IDEs Hilfe bei der Funktion Utoa()


von M. B. (blackmars)


Lesenswert?

Hallo Liebes Forum,
ich habe angefangen programmieren zu lernen mit einem kleinen myavr 
board light jedoch habe ich folgendes Problem. Ich verstehe die funktion 
utoa() nicht besser gesagt die parameter die ich ihr übergeben muss. Ich 
erhoffe mir von dieser funktion aus einem uint16_t es in ASCII zu 
konvertieren und es anschließend per UART auszugeben. Daten vom datentyp 
char lassen sich leicht per UART übertragen jedoch verstehe ich die doku 
von utoa() garnicht.
Ich hoffe ihr könnt mir helfen und erklären oder ein beispiel geben wie 
ich in utoa benutze:

laut doku:  utoa(   unsignedint  __val,char *__s,int __radix)
ich verstehe char*__s nicht und int_radix was ich hier eingeben soll.

Ich hoffe ihr könnt mir bei meinem Problem helfen.

von Udo S. (urschmitt)


Lesenswert?

was verstehst du an "ich verstehe char*__s nicht" nicht?
Ein Pointer auf einen Speicherbereich vom Typ char. wo dein String 
hinsoll, den die Funktion für dich erzeugen soll.

Welches C Buch hast du und hast zumindest die ersten 2 Kapitel schon 
durchgearbeitet?
Ohne Grundlagen geht es nicht.

von PittyJ (Gast)


Lesenswert?

Irgendwo hin soll das Ergebnis ja geschrieben werden. Praktischerweise 
gibt man einen Pointer für den Zielbereich an, also char*__s .
Radix ist das Zahlenformat für die Umwandlung:
2 = binär
8 = oktal
10 =dezimal
16 = hex
Meist steht in der Doku aber auch mehr drin. Wenn das die einzige Doku 
ist, dann hast du irgendetwas falsch gemacht.

von Karl H. (kbuchegg)


Lesenswert?

M. B. schrieb:

> Ich hoffe ihr könnt mir helfen und erklären oder ein beispiel geben wie
> ich in utoa benutze:
>
> laut doku:  utoa(   unsignedint  __val,char *__s,int __radix)
> ich verstehe char*__s nicht und int_radix was ich hier eingeben soll.

der char ist in Wirklichkeit ein Array und dort schreibt dir utoa den 
String rein.
radix ist ganz einfach die Basis des Zahlensystems, das utoa benutzen 
soll. Bei dir wird das 10 sein, aber du könntest zb auch 16 angeben um 
von utoa eine hexadezimale Darstellung zu bekommen oder 2 für eine 
binäre Darstellung oder jede beliebige Basis, die dir gefällt.
1
  char buffer[20];
2
  uint16_t wert = 25;
3
4
  utoa( wert, buffer, 10 );   // nach Text ...
5
  uart_string( buffer );      // und Text ausgeben


Welche Doku benutzt du?
In den üblichen Dokus sind die Parameter normal genau erklärt und 
meistens finden sich auch Beispiele dazu. Wenn deine Doku das nicht hat, 
dann taugt die nichts.

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.