質問

この行のコンパイル

    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)の方がずっといいです。

printf形式指定子のリスト

%lのコメントは次のとおりです:

  

引数はlongと解釈されます   intまたは整数の符号なしlong int   指定子(i、d、o、u、x、およびX)、および   ワイド文字またはワイド文字として   指定子cおよびsの文字列。

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

2番目の引数として、<!> quot; str <!> quot;の長さは必要ありません。  文字列ポインタ/配列名の名前で十分です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top