float ausgeben lassen



  • Wie die Überschrift schon sagt möchte ich mir gerne eine float-Variable ausgeben lassen. Habe es mit sprintf() probiert kriege aber nur ne Fehlermeldung.

    char buffer[200];
    		float position = 5.0f;
    		RECT rctTextBox;
    		rctTextBox.left=2;
    		rctTextBox.right=150;
    		rctTextBox.top=10;
    		rctTextBox.bottom=rctTextBox.top+20;
    		g_D3DXFont->DrawText( NULL, sprintf( buffer, "%f", position ), -1, &rctTextBox, 0, D3DXCOLOR( 255, 255, 255, 255 ) );
    

    Fehlermeldung:
    error C2664: 'ID3DXFont::DrawTextA': Konvertierung des Parameters 2 von 'int' in 'LPCSTR' nicht möglich
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat



  • Dann benutzt doch auch sprintf 😉

    g_D3DXFont->DrawText( NULL, printf( buffer, "%f", position )
    ...
    sprintf( buffer, "%f", position );
    g_D3DXFont->DrawText( NULL, buffer,...)
    


  • he,

    versuchs mal so:

    #include <cmath>
    
    sprintf_s(buffer, "x: %f", position); 
    
    g_D3DXFont->DrawText( NULL, buffer , -1, &rctTextBox, 0, D3DXCOLOR( 255, 255, 255, 255 ) );
    

    ..hoffe es geht wirklich 🙂

    EDIT
    ..hm, da will man mal helfen und kommt zu spät 🙂



  • @Storm.Xapek.de: Sorry, hab mich nur verschrieben. Bei sprintf() kriege ich die gleiche Fehlermeldung.

    @iop: Mit sprintf_s() kriege ich folgende Fehlermeldung: error C3861: "sprintf_s": Bezeichner wurde nicht gefunden.



  • Barney Gumble schrieb:

    @iop: Mit sprintf_s() kriege ich folgende Fehlermeldung: error C3861: "sprintf_s": Bezeichner wurde nicht gefunden.

    sprintf_s ist eine "Ichbin besser als der Standard und sowieso viel schlauer" funktion der MS-Compiler ab 7 oder 8 (2003 bzw 2005) verwende einfach sprintf()



  • @darthdespotism: Mit sprintf() kriege ich ne Fehlermeldung s.o.



  • Barney Gumble schrieb:

    @Storm.Xapek.de: Sorry, hab mich nur verschrieben. Bei sprintf() kriege ich die gleiche Fehlermeldung.

    Das Problem, was dir Storm.Xapek.de auch schon mittgeteilt hat, ist, dass sprintf() nicht den geprinteten String zurückgibt, sondern nur die Zahl der geprinteten Zeichen. Ergo: Du musst sprintf() aufrufen, und dann erst buffer an die DrawText-Methode übergeben. Eben das was Storm.Xapek.de auch schon geschrieben hat.



  • Funktioniert einwandfrei. Vielen dank.


Anmelden zum Antworten