C6302

警告 C6302:格式字符串不匹配: 传递了字符字符串参数 <number>,而对 <function> 的调用需要宽字符字符串参数

此警告意味着格式字符串指定需要宽字符字符串。 但是,传递的是字符字符串。 此缺陷有可能会导致某种形式的系统崩溃或损坏。

示例

在下面的代码示例中,因为向 wprintf 函数传递了字符字符串,所以会生成此警告:

#include<stdio.h>

void f()
{
  char buff[5] = "hi";

  wprintf(L"%s", buff);
}

下面的代码示例使用 %hs,借助于 wprintf 函数指定单字节字符字符串:

#include<stdio.h>

void f()
{
  char buff[5] = "hi";

  wprintf(L"%hs", buff);
}

下面的代码示例使用安全的字符串操作函数 wprintf_s 来更正此警告:

#include<stdio.h>

void f()
{
  char buff[5] = "hi";

  wprintf_s(L"%hs", buff);
}