我正在尝试使用WCHAR中的sprintf_s创建一个新字符串。我的代码如下:
#include <stdio.h>
#include <Windows.h>
void main(int argc, char ** argv) {
TCHAR header[200];
TCHAR* uuid = L"4facda65-5b27-4c70-b7d4-58c57b87682a";
sprintf_s(&header, 200, "Client-ID: %ws\n", uuid);
printf("UUID: %ws\n", uuid);
printf("Header: %ws\n", header);
}
标题如何显示为Header:
而不是Header: 4facda65-5b27-4c70-b7d4-58c57b87682a
。
我似乎无法弄清楚我在做什么错。
编辑:Tim Randall的链接帮助我找到了可行的解决方案。
用sprintf_s
代替swprintf(header, sizeof(header) / sizeof(*header), L"Client-ID: %ws\n", uuid);
行似乎可行。
还是,我不确定为什么这样,sprintf_s
为什么没有呢?
答案 0 :(得分:3)
只需使用旨在处理或打印wchar_t
字符串和显式定义的宽字符字符串的函数:
WCHAR header[200];
WCHAR* uuid = L"4facda65-5b27-4c70-b7d4-58c57b87682a";
swprintf_s(header, 200, L"Client-ID: %s\n", uuid);
wprintf(L"UUID: %s\n", uuid);
wprintf(L"Header: %s\n", header);
请注意,您只是将header
作为要写入的字符串而不是&header
。