Problem mit utoa()

Gast #2657800
Hallo,

Ich habe folgendes Problem, das ich nicht lösen kann:
Ich möchte einen beliebigen unsigned 8bit Integer so "auseinander 
nehmen", dass ich auf die einzelnen Ziffern zugreifen kann. Nun habe ich 
mir gedacht das ganze erst in ein String umzuwandeln, und die einzelnen 
chars (Ziffern) dann wieder in ein int umzuwandeln. Sieht bei mir wie 
folgt aus:

char ascii[4];
uint8_t ziffer;

utoa(123,ascii,10);    // 123 beliebiger int-Wert
ziffer=atoi(ascii[0]); // erste ziffer aus ascii speichern

Schlicht und einfach: Es funktioniert nicht, und ich kann mir nicht 
erklären warum. Bin mit C noch nicht sehr vertraut. Vielleicht kann mich 
hier jemand auf den Fehler aufmerksam machen. Danke im Voraus!
#2657816
Jabu schrieb:
> Es funktioniert nicht, und ich kann mir nicht
> erklären warum.

Weil atoi als Argument einen String erwartet und nicht ein einzelnes 
Zeichen.

Jabu schrieb:
> Ich möchte einen beliebigen unsigned 8bit Integer so "auseinander
> nehmen", dass ich auf die einzelnen Ziffern zugreifen kann.

Dann benutze doch dezimale Arithmetik.
Die Hunderter sind z.B. "Zahl / 100" und die Einer sind "Zahl % 10". Die 
Zehner kannst du ja mal selbst versuchen.
Gast #2657819
Jabu schrieb:
> Nun habe ich
> mir gedacht das ganze erst in ein String umzuwandeln, und die einzelnen
> chars (Ziffern) dann wieder in ein int umzuwandeln.

warum so kompiziert?

456 / 100     = 4
(456 / 10)%10 = 5
456 %10       = 6


> ziffer=atoi(ascii[0]); // erste ziffer aus ascii speichern
man muss bei atio einen string übergeben, ein zeichen geht so nicht.

ziffer = ascii[0] - '0';

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.