我是Windows API的新手。我正在做一个关于将计算机名打印到控制台的练习。以下是我目前拥有的代码:
wchar_t compName[MAX_COMPUTERNAME_LENGTH+1];
DWORD maxSize = MAX_COMPUTERNAME_LENGTH+1 ;
BOOL getName = GetComputerNameW(compName, &maxSize);
wprintf(L"Computer name is: %s",compName);
问题出在输出上。我只在控制台上看到Computer name is D
,而我应该看到DESKTOP-XXXXXX
。
我做错了什么?我相信我调用了正确的函数,根据MSDN文档。我在StackOverflow上看到过关于这个问题的帖子,但它是在C++而不是C中。
我觉得这和我打印Unicode字符串有关。
1条答案
按热度按时间bis0qfac1#
格式说明符
%s
用于打印char*
指向的字符串,即使在wprintf
中也是如此。应该使用格式说明符
%ls
打印宽字符串。printf, _printf_l, wprintf, _wprintf_l | Microsoft Learn