Freigeben über


Warnung C6064

Fehlendes ganzzahliges Argument für 'Funktionsname', das dem Konvertierungsbezeichner 'number' entspricht

Diese Warnung gibt an, dass der Code nicht genügend Argumente bereitstellt, um einer Formatzeichenfolge zu entsprechen, und eines der fehlenden Argumente ist eine ganze Zahl.

Hinweise

Dieser Fehler verursacht wahrscheinlich eine falsche Ausgabe und kann in gefährlicheren Fällen zu Stapelüberlauf führen.

Codeanalysename: MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION

Beispiel

Der folgende Code generiert diese Warnung, da im Aufruf sprintf_s eine falsche Anzahl von Argumenten verwendet wird und das fehlende Argument eine ganze Zahl ist. Wenn die unsichere Funktion sprintf anstelle der sichereren Variante sprintf_sverwendet wurde, würde dieser Code wahrscheinlich einen Stapelüberlauf anstelle einer unerwarteten Ausgabe verursachen:

void f()
{
    char buff[8];
    const char *string="Hello";
    sprintf_s(buff, sizeof(buff), "%s %d", string);  // Attempts to print "Hello "
    // followed by a number up to eleven characters long, depending on the garbage
    // found on the stack. Any number other than a single non-negative digit can't
    // fit in the 8 char buffer and leave room for the trailing null. If sprintf 
    // had been used instead, it would overflow.
}

Um diese Warnung zu korrigieren, geben Sie fehlende Argumente an, oder passen Sie die Formatzeichenfolge an. In diesem Beispiel fügen wir den fehlenden ganzzahligen Wert hinzu.

void f()
{
    char buff[8];
    const char *string = "Hello";
    sprintf_s(buff, sizeof(buff), "%s %d", string, strlen(string));
}

Siehe auch

sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l
C4473