Question

Compiler ces lignes

    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); 

J'ai lu deux avertissements sur la ligne snprintf:

 warning: conversion lacks type at end of format
 warning: too many arguments for format

Pourquoi? Le type est spécifié (long int sz et% l dans snprintf) et l'argument dans snprintf est unique. Quelqu'un peut-il m'aider? Merci.

Était-ce utile?

La solution

Votre format manque de type, car l est un & "; sizeof &"; modificateur. Devrait être% ld

Autres conseils

boost::lexical_cast<string>(sz) est beaucoup plus agréable, de toute façon.

Consultez cette liste de spécificateurs de format printf

.

Son commentaire sur% l est:

  

L'argument est interprété comme un long   int ou unsigned long int pour entier   spécificateurs (i, d, o, u, x et x), et   en tant que caractère large ou caractère large   chaîne pour les spécificateurs c et s.

int sprintf (char * str, format const char *, ...);

Il ne faut pas que la longueur de & "; str &"; soit le deuxième argument.  Le nom du pointeur / nom du tableau est suffisant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top