Integer* zu const char*

Gast #2261244
Lesenswert?

Guten morgen,
ich möchte eine Variable vom Typ Integer* zum Typ const char* wandeln 
(in C):
1
int var=500;
2
int *ptrVar=&var;
3

4
displayValue("Wert der Variable:\n");
5
displayValue((const char*)ptrVar);

Die Funktion displayValue erwartet, wie zu sehen ist, einen const char*.
Der Compiler verarbeitet es auch, allerdings wird durch die Funktion nur 
"Wert der Variable:\n" ausgegeben und der Rest fällt unter den Tisch.
Kann man Ints nicht einfach casten?

Viele Grüße
Gast #2261251
Lesenswert?

Aua. Murks.

500 passt nicht in einen char und diese ganze "Casterei" zeugt von 
tiefem Nicht- bzw Unverständnis. Deine Funktion will ein 
char-Array=einen String, deshalb const char*. Um eine Zahl auszugeben 
muss diese mit sprintf oder irgendwas handlicherem in einen String 
umgewandelt werden, mit irgendwelchen casts wird das nichts.

Buchtipp: 
http://www.amazon.de/Programming-Language-Prentice-Hall-Software/dp/0131103628/ref=sr_1_1?ie=UTF8&qid=1310455365&sr=8-1
Persönliche Seite #2261254
Lesenswert?

Die Funktion "displayValue" gibt eine Zeichenkette aus.

Damit Dein Wert in lesbarer Form ausgegeben werden kann, musst Du ihn in 
eine Zeichenkette umwandeln. Ein Typecast aber macht das nicht.

Dein Versuch geht in die Hose, weil das, worauf ptrVar zeigt, keine 
Zeichenkette ist. Zeichenketten sind nullterminiert, Deine per Typecast 
erzeugte Quasizeichenkette aber besteht aus zwei Bytes (500dez = 0x1f4 = 
0x01 0xF4) ... und hört mit der nächsten zufällig irgendwo im Speicher 
gefundenen Null auf.


Um eine Zahl in eine Zeichenkette umzuwandeln, kannst Du beispielsweise 
sprintf oder itoa verwenden.
Persönliche Seite #2261261
Lesenswert?

Manni schrieb:
> Die Ausgabe erfolgt auf einem Display eines uCs, desswegen möchte ich
> von scanf abstand nehmen.

Von scanf war auch nie die Rede. Du meinst wohl eher printf. Dann 
nimm halt itoa.

Im übrigen ist der Funktionsname displayValue ziemlich bescheuert - 
weil er nicht zutrifft. Diese Funktion stellt keinen Wert dar, sondern 
eine Zeichenkette. Also beliebige Texte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren