警告 C6302
書式指定文字列の不一致。
解説
この警告は、書式指定文字列がワイド文字列を指定しているが、代わりに狭い文字列が渡されていることを示します。 警告の 1 つの原因は、 %s
%S
printf
wprintf
または . この欠陥が原因で、出力が正しくなくなる可能性に加えて、クラッシュする可能性もあります。
コード分析名: 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);
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示