我正在尝试获得一个wchar_t*
格式化为int
作为参数。我用谷歌搜索了很多,但结果却更加困惑。所以,考虑这段代码:
int main(int argc, char** argv) {
wchar_t buf[16];
wsprintf(buf, L"%d", 5);
wprintf(L"[%ls]\n", buf);
system("pause");
return 0;
};
假设wchar_t
, wsprintf
and wprintf
是等价的宽字符char
, sprintf
and printf
分别,我期望上面打印[5]
,但它在之间打印垃圾[
and ]
。达到预期结果的正确方法是什么?我在这里误解了什么?
(我应该澄清,这里的可移植性比安全性更重要,所以我想知道一个使用这一系列函数而不是更安全的特定于供应商的扩展的解决方案。)
wsprintf()
是 Windows 特有的功能,在 Unix 上不可用。您想要实现的目标可以以更便携的方式完成(我已经尝试过这个稍微修改过的代码片段,它按预期工作):
#include <wchar.h>
#include <stdio.h>
int main(int argc, char **argv)
{
wchar_t buf[16];
swprintf(buf, sizeof(buf) / sizeof(*buf), L"%d", 5);
wprintf(L"[%ls]\n", buf);
return 0;
}
Output:
[5]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)