警告 C6303

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

解説

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

コード分析名: WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION

この警告が生成されるコード例を次に示します。 buff はワイド文字列ですが printf_s 、呼び出しでは次のように短い文字列が %s必要です。

#include <stdio.h>

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

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

#include <stdio.h>

void f()
{
    wchar_t buff[5] = L"hi";
    printf_s("%ls", buff);
}

関連項目

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