警告 C6302

書式指定文字列の不一致。

解説

この警告は、書式指定文字列がワイド文字列を指定しているが、代わりに狭い文字列が渡されていることを示します。 警告の 1 つの原因は、 %s%Sprintfwprintfまたは . この欠陥が原因で、出力が正しくなくなる可能性に加えて、クラッシュする可能性もあります。

コード分析名: CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION

この警告が発生するコード例を次に示します。 buff は狭い文字列ですが wprintf_s 、ワイド文字列の printf_s バリアントであるため、 %s 幅が広くなります。

void f()
{
    char buff[5] = "hi";
    wprintf_s(L"%s", buff);
}

次のサンプル コードでは、1 バイトの文字列を指定して %hs この問題を修復します。 または、like 関数でwprintf使用する場合は狭い文字列である、に切り替えた%S可能性があります。 その他のオプションについては、「 書式指定の構文: printf 」および wprintf 「関数 」を参照してください。

void f()
{
    char buff[5] = "hi";
    wprintf_s(L"%hs", buff);
}

関連項目

書式指定の構文: printf および wprintf 関数
C4477
C6303