UINT in String oder so casten
-
Du musst einen Buffer bereistellen, der genügend Platz hat um die Zahl als String aufzunehmen...
Du stellst aber weder einen gültigen Buffer bereit noch genügend Platz...Und ganz abgesehen davon ist das _itoa für einen "int" und keine "uint"... aber mein Vorschlag hast Du ja schon vielleicht gelesen...
-
genau, dann misch ich mich gleich auch nochmal ein, nachdem ich vorher mist verzapft habe

Jochens war eh der bessere bzw richtige Vorschlag, da zB bei _itoa(4 000 000 000) eine negative Zahl in den String liefern, da die 4 Mio > 2^31 und _itoa() die Zahl aber als SIGNED INT und das gesetzte erste Bit deshalb als "Minus-Bit" interpretieren wuerde.
genau das umgeht Jochens Beispiel.gruss
-
Jochen Kalmbach schrieb:
TCHAR szStr[100]; UINT uVal = 0; _sntprintf(szStr, , sizeof(szStr)-1, "%u", uVal);So aber nicht.
So schon eher:TCHAR s[100]; UINT x = 0; _sntprintf(s, sizeof(s) / sizeof(*s), _T("%u"), x);
-
groovemaster schrieb:
TCHAR s[100]; UINT x = 0; _sntprintf(s, sizeof(s) / sizeof(*s), _T("%u"), x);Ne... so auch nicht... die ganz, ganz richtige Lösung ist:
TCHAR szStr[100]; UINT uVal = 0; _sntprintf(szStr, sizeof(szStr)-1, _T("%u"), uVal); szStr[sizeof(szStr)-1] = 0;
-
^^ oder du bleibst mit deinen werten einfach unter 2 Milliarden und bei _itoa()

-
Dann hast Du aber mit VC2005 das Problem, dass die Funktion deprecated ist, da sie unsicher ist...
-
Jochen Kalmbach schrieb:
groovemaster schrieb:
TCHAR s[100]; UINT x = 0; _sntprintf(s, sizeof(s) / sizeof(*s), _T("%u"), x);Ne... so auch nicht...
Doch, genau so.

Wenn du Fehler abfangen willst, dann überprüfe den Rückgabewert.btw:
sizeof liefert immer noch Bytes und nicht Zeichen.szStr[sizeof(szStr)-1] = 0;erzeugt bereits undefiniertes Verhalten.
-
Da muss ich DIr doch glatt Recht geben... hab ich irgendwie übersehen... sorry!
-
Leute! Hilfe! Jochens erste Lösung geht doch, was soll ich mit noch einer? und noch einer? und noch einer? also: Problem gelöst, aber wenn ihr gerne weiterdisskutieren wollt, bitte...aber ich brauche es nicht mehr und lese es nicht mehr :p
-
Nimm bitte die Lösung:
TCHAR s[100]; UINT x = 0; _sntprintf(s, sizeof(s) / sizeof(TCHAR), _T("%u"), x); s[(sizeof(s)/sizeof(TCHAR))-1] = 0;Meine erste Funktionier nur, wenn Du kein UNICODE verwendest...