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解释的很好了