gpt4 book ai didi

c - 为什么在 Windows 上打印这个宽字符串会崩溃?

转载 作者:行者123 更新时间:2023-12-05 07:04:16 38 4
gpt4 key购买 nike

我在进行一些单元测试时偶然发现了一个问题,我不完全确定为什么以下简单示例在使用 sprintf(将 Windows 与 Visual Studio 2019 结合使用)时会崩溃。

#include <stdio.h>
#include <locale.h>

int main()
{
setlocale(LC_ALL, "en_US.utf8");
char output[255];
sprintf(output, "simple %ls text", L"\u00df\U0001d10b");
return 0;
}

代码有问题吗?

最佳答案

char 是 8 位的,wchar_t 是 16 位的。当您尝试转换两者时,您将不得不使用像 MultiByteToWideChar 这样的函数在两者之间进行转换。

当您尝试在多字节函数中使用 Unicode 字符串时,会导致缓冲区溢出,这可能是您崩溃的原因。

请尝试使用 swprintf_s

关于c - 为什么在 Windows 上打印这个宽字符串会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62968096/

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