Hallo,
ich habe eine kleine Frage: Wie kann ich eine Variable vom Typ int in eine des Typs char* umwandeln?
mfg _R2D2
Hallo,
ich habe eine kleine Frage: Wie kann ich eine Variable vom Typ int in eine des Typs char* umwandeln?
mfg _R2D2
Naja, normale Typumwandlungen gehen grundsätzlich erstmal
a) automatisch (falls möglich), oder
b) mit einem expliziten cast, da geht int -> char so: Charvariable = (char)Intvariable
Aaaaaber...
bei int nach char* scheint es mir als würdest du etwas anderes beabsichtigen, nämlich eine Zahl in einen Text umzuwandeln, richtig?
in diesem Fall kann man z.B. printf() verwenden
So viele Treppen und so wenig Zeit!
Es stimmt, ich möchte eine Zahl in einen Text umwandeln, den ich dann auf einem LCD-Display ausgeben kann.
Das habe ich auch schon probiert, aber die Charvariable bekommt dann irgendeinen undefinierten Wert aber nicht meine Zahl zugewiesen.Charvariable = (char)Intvariable
Wie würde das dann mit printf() funktionieren?in diesem Fall kann man z.B. printf() verwenden
Moin!
Int nach string geht wunderbar mit itoa()... momentchen... irgendwo hatte ich doch.... ah, jetz ja :
die Zehn ist die Basis, in dem fall also dezimal, und 'itoa' heißt wohl 'integer to ASCII'.Code:unsigned int wert; unsigned char text[7]; itoa(wert,text,10);
Das ein Cast nicht funktioniert, ist eigentlich logisch, wenn man sich mal mit verschiedenen Variablentypen auseinandersetzt, am Ende sind es ja alles bytes, ein Int sind halt 2, ein Char 1 und wenn dein int zufällig '65' wäre und Du es als char behandeln würdest, dann wäre das halt 'A', da die 65 der ASCII Code für das 'A' ist. Alles eine Frage der Interpretation.
Oder so ähnlich ... .-)
MfG
Volker
Meine kleine Seite
http://home.arcor.de/volker.klaffehn
http://vklaffehn.funpic.de/cms
neuer Avatar, meine geheime Identität
das kann man sich zu Nutze machen wenn man nur einzelne Ziffern umwandeln moechte:Zitat von vklaffehn
char ziffer = 7;
char ascii;
ascii = ziffer + '0';
und schon hat man die Ziffer 7 in die ASCII-Darstellung umgewandelt. Umgekehrt gehts natuerlich genauso.
Mal so nebenbei als Tipp
Ich möchte aber int nach char* nicht nach char umwandeln!
Wie funktioniert das mit printf()?
mfg
Ich würde itoa empfehlen, wie Volker schon geschrieben hat. printf ist ne ziemlich universelle Funktion, die aber leider auch viel mehr Ressourcen verbraucht als itoa.
Aber mit itoa bekomme ich doch char[] und nicht char* , oder?
Ich brauche den Wert als Text, um ihn auf einen LCD-Display auszugeben. Dazu stehen mir nur diese Funktionen zur Verfügung,
bei denen ich den Wert als char* brauche. Oder gibt es eine Möglichkeit um zu überprüfen, wie groß das Arrey ist, also wie viele Felder es hat?Code:void lcd_write1(char text) { sbi(LCD_PORT, 2); lcd_send(text); } void lcd_write2(char* pText) { while(pText[0] != 0) { lcd_write1(pText[0]); pText++; } } void lcd_write3(char* pText, int count) { while(count != 0) { lcd_write1(pText[0]); pText++; count--; } }
unsigned char text[7];
...
lcd_write2(text);
MfG
Stefan
Wenn das Arrey 7 Felder lang ist und ich z.B.
schreibe, dann ist doch nur ein Feld im Arrey belegt und die restlichen Felder sind unbelegt. Macht das denn nichts aus? Zeigt mir das Display dann trotzdem nur "8" an?Code:unsigned int wert; unsigned char text[7]; itoa(wert,text,8); lcd_write2(text);
Lesezeichen