wsprintf



  • Kann mir bitte jemand erklären, was dieser code mach:

    char Text[40];
        Text[wsprintf(Text, "GAME OVER. Du hast %i Punkte erreicht", iPunkte)] = '\0';
    

    Ich weis, das Gameover ... int Text gespeichert wirt. Aber wieso muss man Text zweimal angeben und was macht die eckige Klammer? Und wieso kommt am ende ='\0'? Ich weis, das da ein Abschlusszeichen drangehängt wird aber = ist doch zum definieren 😕



  • Hast du den Code selbst geschrieben? Der ist ja affig...

    char Text[40];
    wsprintf(Text, "GAME OVER. Du hast %i Punkte erreicht", iPunkte);
    

    reicht doch



  • Ne, hab ich nich selber geschrieben, deswegen hab ichs ja nich verstanden.

    Danke für die verständliche version 😋



  • wsprintf liefert als Rückgabewert die Anzahl der Character, die in den STring egeschrieben wurden, ohne die terminierende NULL.

    MSDN schrieb:

    If the function succeeds, the return value is the number of characters stored in the output buffer, not counting the terminating null character.

    Man könnte das also auch so schreiben (ist vielleicht verständlicher):

    char Text[40];
    int Anzahl = wsprintf(Text, "GAME OVER. Du hast %i Punkte erreicht", iPunkte);
    Text[Anzahl] = '\0';
    


  • Ist aber überflüssig, denn in der Funktionsbeschreibung steht:

    The function appends a terminating null character to the characters it writes



  • Das steht auf nem anderen Blatt. Sicherlich ist es überflüssig, aber nero-ex wollte erklärt haben, was die Zeile macht, und nicht ob sie überflüssig ist.


Anmelden zum Antworten