警告 C6064
変換指定子 'number' に対応する 'function-name' の整数引数がありません
この警告は、コードが書式指定文字列と一致する十分な引数を提供せず、不足している引数の 1 つが整数であることを示します。
解説
この欠陥により、出力が正しくなく、より危険な場合にスタック オーバーフローが発生する可能性があります。
コード分析名: MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION
例
次のコードは、呼び出し sprintf_s
で正しくない数の引数を使用し、不足している引数が整数であるため、この警告を生成します。 安全でないバリアントsprintf_s
の代わりに安全でない関数sprintf
が使用された場合、このコードは予期しない出力ではなくスタック オーバーフローを引き起こす可能性があります。
void f()
{
char buff[8];
const char *string="Hello";
sprintf_s(buff, sizeof(buff), "%s %d", string); // Attempts to print "Hello "
// followed by a number up to eleven characters long, depending on the garbage
// found on the stack. Any number other than a single non-negative digit can't
// fit in the 8 char buffer and leave room for the trailing null. If sprintf
// had been used instead, it would overflow.
}
この警告を修正するには、不足している引数を指定するか、書式指定文字列を調整します。 この例では、不足している整数値を追加します。
void f()
{
char buff[8];
const char *string = "Hello";
sprintf_s(buff, sizeof(buff), "%s %d", string, strlen(string));
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示