小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【cppcheck】(warning) sprintf format string requires 1 parameter but 2 are given.

はじめに

C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。

(warning) sprintf format string requires 1 parameter but 2 are given.

cppcheckのバージョン
  • v1.66
サンプルプログラム

以下のソースプログラムを解析にかけると表示されます。

#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR *argv[])
{
  char szBuff[256] = { 0 };
  sprintf(szBuff, "%s", "hoge", "fuga"); //-> (warning) sprintf format string requires 1 parameter but 2 are given.
  //sprintf(szBuff, "%s", "hoge");  //-> OK
  printf("%s\n", szBuff);

  return 0;

}

上記のように、sprintf関数の書式指定文字列中の%sの数と実際に渡している引数の数が一致していない場合に警告が表示されます。