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