はじめに
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の数と実際に渡している引数の数が一致していない場合に警告が表示されます。
関連記事
- 【cppcheck】(style) Clarify calculation precedence for '+' and '?'.
- 【cppcheck】error: Undefined behavior: Variable 'xxx' is used as parameter and destination in s[n]printf().
- (warning) The 2nd memset() argument '8224' doesn't fit into an 'unsigned char'.
- 【C++】構造体のサイズとバイトアライメント
- C++のコードレビューで使いたい、コードの品質を向上させる3つの方法