c++字符集相关,sprintf_s 工作方式

sprintf_s 是如何进行格式化字符串检查的?
在网上看见的例子:
iRt = sprintf_s(szA, 8, "%s", L"和平"); // 乱码,四个字节
iRt = sprintf_s(szA, 8, "%s", "和平"); // 和平
iRt = sprintf_s(szA, 8, "%S", L"和平"); // 零字节 -1
iRt = sprintf_s(szA, 8, "%S", "和平"); // 零字节 -1
能不能从sprintf_s函数本事检查方式及字符集方面给讲解下?尤其是倒数第二个。

换用宽字节版的printf试试

格式化的输出于format参数有关,%S是不存在的,无法识别并执行,返回-1

你需要一一对应,API跟字符集

 iRt = swprintf_s(szA, 8, L"%s", L"和平");
iRt = sprintf_s(szA, 8, "%s", "和平"); 

我没搞懂没什么问题啊,下面MSDN解释的很好了
图片说明