【发布时间】:2021-04-12 19:56:09
【问题描述】:
我正在尝试在我的 Win32 C++ 应用程序中使用 wsprintf() 将两个斜杠“\”添加到 TCHAR 缓冲区 [] 的末尾。 变量“buffer”保存一个文件路径:C:\Users\nayub\Desktop\Folder1\Hello。我想在这个文件路径的末尾添加两个斜杠,下面的代码也是如此:
wsprintf(filename_buff, buffer, L"\\");
MessageBox(hWnd, filename_buff, L"New Folder Directory", MB_OK | MB_ICONINFORMATION);
但是,消息框显示“C”而不是其他任何内容。我不确定为什么它得到“C”而不是文件路径,因为在添加斜杠之前,文件路径会正确打印出来。
【问题讨论】:
-
我也不确定为什么它会得到“C”。您的代码中没有任何内容表明该字母的原因。请提供minimal reproducible example(包括变量声明)。
-
如果您在编译时收到任何警告,请将它们复制/粘贴到问题中。您可能会忽略一个准确地告诉您问题所在的信息。
-
查看
wsprintf的文档,尤其是格式字符串。如果您知道缓冲区足够大,您可以使用wcscat附加到它。根据您的项目设置,您实际上可能会调用wsprintfA,这将给出您在传递宽字符串时所描述的行为。 -
明显问题:您使用了错误的功能。
wsprintf是一个奇怪的 Windows 东西,它主要是 Windows 3.x 的遗留物。你想要的几乎肯定是swprintf。下一个问题:你不应该真的摆弄TCHAR,这是另一个奇怪的 Windows 东西,在这种情况下是从 Windows 95/98 遗留下来的。无论如何,您的代码仅适用于宽字符,因此请使用wchar_t,而不是TCHAR。
标签: c++ winapi concatenation slash