我收到错误“类型为char * *类型lpcwstr的参数”在c怎么修复?
char text[MAX_PATH]= {};
sprintf(text, "Number of Words: %S", computerName);
sprintf(text, "Number of Sentences: %S", userName);
sprintf(text, "Number of Digits: %d", objSystemInfo.dwNumberOfProcessors);
sprintf(text, "Number of Upper Case: %d", bit);
MessageBox(NULL, text , L"Sistem Bilgisi", MB_OK);
3 回答
MessageBox接收LPCWSTR,你可以将它表示为wchar_t而不是char,并使用wsprintf写入wchar_t,如下所示:
请注意,LPCWSTR在winnt标头中定义为:
typedef const WCHAR* LPCWSTR
,表示指向const wide char的指针 . 在您的情况下,文本是char表 . 如果您的项目使用UNICODE,则MessageBox的第二个参数必须是LPCWSTR . 因此,如果您尝试通过wchar_t text[MAX_PATH]= {};
更改char text[MAX_PATH]= {};
的声明,它将解决您的编译问题 . 但是,您的MessageBox将显示空文本消息,如注释中所述,sprintf不会向您的文本变量添加文本 .最简单的解决方案是调用
MessageBoxA()
:否则,如果继续调用
TCHAR
的TCHAR
版本,则需要更新代码以使用TCHAR
作为文本:否则,请调用
MessageBox()
的WCHAR
版本并使用WCHAR
作为您的文字: