gpt4 book ai didi

c - 将 sprintf_s 与 wchar 一起使用未按预期格式化

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:23 27 4
gpt4 key购买 nike

我正在尝试使用 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: 而不是 Header: 4facda65-5b27-4c70-b7d4-58c57b87682a

我似乎无法弄清楚我做错了什么。

编辑:Tim Randall 的链接帮助我找到了可行的解决方案。将 sprintf_s 行替换为 swprintf(header, sizeof(header)/sizeof(*header), L"Client-ID: %ws\n", uuid); 似乎去工作。

不过,我不确定为什么这有效,为什么 sprintf_s 没有?

最佳答案

只需使用旨在处理或打印 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);

另请参阅:Is TCHAR still relevant?

另请注意,您只是将 header 作为要写入的字符串传递,而不是 &header

关于c - 将 sprintf_s 与 wchar 一起使用未按预期格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53125187/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com