Avertissements à l'aide de chaînes de format avec sprintf() en C++
De la compilation de 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 snprintf ligne:
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 de snprintf est seul. Quelqu'un peut-il m'aider? Merci.
OriginalL'auteur Emilio | 2008-12-03
Vous devez vous connecter pour publier un commentaire.
Le format de votre manque de type, car l est un "sizeof" modificateur. Doit être %ld
OriginalL'auteur Dmitry Khalatov
boost::lexical_cast<string>(sz)
est beaucoup plus agréable, de toute façon.OriginalL'auteur Matt Cruikshank
Voir cette liste de les spécificateurs de format de printf
C'est un commentaire pour %l est:
OriginalL'auteur Rob Walker
int sprintf ( char * str, const char * format, ... );
Il ne nécessite pas la longueur de la "str", comme deuxième argument.
Le nom du pointeur de la chaîne/le nom du tableau est assez.
OriginalL'auteur