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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top