Forum: Compiler & IDEs bei verwendung von itoa alles verkehrtherum


von Malte Struebert (Gast)


Lesenswert?

Hallo,

ich habe mein LCD Anzeigeproblem gefunden, allerdings kann ich es mir
nicht erklären.
Wenn ich den befehl itoa verwende dreht er mir alles verkehrherum.

d.h. bei folgendem Code:

  WaterDisplay = 201;
  itoa(WaterDisplay,s,16);
  strcat(s,"C");
  WriteLCD(s);

steht folgendes auf dem Display: 102C

Der String wird von der WriteLCD Funktion korrekt ausgelesen und
dargestellt. ein WriteLCD("Das ist ein Test") funktioniert tadellos!
also scheint der Fehler beim itoa zu liegen.

WaterDisplay ist übrigends ein unsigned int. habs aber auch schon mit
unsigned char und int probiert, bei beidem das selbe problem.

Gibts noch ne andere Lösung oder kennt jemand das Problem. CPU ist ein
Tiny26

Gruß
Malte.

: Gesperrt durch User
von Christian Schifferle (Gast)


Lesenswert?

Hallo Malte

Also meiner Meinung nahc müsste auf der Anzeige C9C stehen.
Mit itoa(WaterDisplay,s,16) wandelst du die Zahl 201 in einen Hexstring
(Basis 16) um, wobei als Resultat C9 herauskommen müsste.
Um eine dezimalzahl zu erhalten müsstest du itoa(WaterDisplay,s,10)
verwenden.
Warum bei dir allerdings 102C angegeben wird ist mir völlig
schemenhaft.
Wie ist denn dein s deklariert?

Gruss
Christian

von Malte Struebert (Gast)


Lesenswert?

Hi,

die 16 mußt du dir natürlich wegdenken das sollte ne 10 sein...
aber es ist egal ob radix 10 oder 16 ist, die anzeige ist IMMER
verkehrtherum...

habs auch schon mit einem strrev(s) probiert aber da tut sich
GARNICHTS.

s ist ein "char s[10];"

ist echt komisch...

von Joerg Wunsch (Gast)


Lesenswert?

Irgendwie zerschießt Du Dir den Speicherbereich offenbar wieder,
in dem Du das alles machst.  Wie das genau funktioniert, müßte
man wohl debuggen...  Aber itoa() macht am Ende selbst ein
strrev().

Du kannst ja mal probieren, Deinen Puffer als statische (bzw.
globale) Variable anzulegen.

von Joachim (Gast)


Lesenswert?

Hallo Malte,

Du hast vor über acht Jahren einen Fehler entdeckt, der mich 2011 auch 
getroffen hat:
Beitrag "Problem mit ltoa"

Auch die neueste Version des WINAVR produziert auf dem ATtiny26 die 
Ausgabestrings von itoa verkehrtherum.

Gruß
Joachim

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.