C ++のsprintf()でフォーマット文字列を使用した警告
質問
この行のコンパイル
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);
snprintf行で2つの警告を読みました:
warning: conversion lacks type at end of format
warning: too many arguments for format
なぜですか?タイプが指定され(long int sz、snprintfの%l)、snprintfの引数は1つのみです。誰も私を助けることができますか?ありがとう。
解決
lは<!> quot; sizeof <!> quot;修飾子。 %ldでなければなりません
他のヒント
とにかく
boost::lexical_cast<string>(sz)
の方がずっといいです。
%lのコメントは次のとおりです:
引数はlongと解釈されます intまたは整数の符号なしlong int 指定子(i、d、o、u、x、およびX)、および ワイド文字またはワイド文字として 指定子cおよびsの文字列。
int sprintf(char * str、const char * format、...);
2番目の引数として、<!> quot; str <!> quot;の長さは必要ありません。 文字列ポインタ/配列名の名前で十分です。
所属していません StackOverflow