Warnungen mit Formatstrings mit sprintf () in C ++
Frage
Kompilieren diese Zeilen
long int sz;
char tmpret[128];
//take substring of c, translate in c string, convert to int,
//and multiply with 1024
sz=atoi(c.substr(0,pos).c_str())*1024;
snprintf(tmpret,128,"%l",sz);
Ich las zwei Warnung auf snprintf Zeile:
warning: conversion lacks type at end of format
warning: too many arguments for format
Warum? Der Typ wird spezifiziert (long int sz, und l% in snprintf) und das Argument in snprintf ist nur einer. Kann mir jemand helfen? Danke.
Lösung
Ihr Format fehlt geben, weil ich ein „sizeof“ Modifikator ist. Sollte sein% ld
Andere Tipps
boost::lexical_cast<string>(sz)
ist viel schöner, sowieso.
Sehen Sie diese Liste der printf Formatbezeich
Es ist Kommentar für% l:
Das Argument wird als lang interpretiert int oder unsigned long int für ganzzahlige Spezifizierer (i, d, o, u, x und X), und als breite Zeichen oder Zeichenweit String für Bezeich c und s.
int sprintf (char * str, const char * Format, ...);
Es erfordert nicht die Länge von „str“, als zweites Argument. Der Name des String-Zeiger / Array-Name ist genug.