gpt4 book ai didi

c - 在c中打印多八位字节字符

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:32 24 4
gpt4 key购买 nike

我试图在控制台中打印一些特殊字符,但我遇到了问题:

例如,如果我想打印 '│',我将在控制台中得到 '^B'。

'│' 的十进制值为 9474,我意识到这个字符是在 3 个八位字节上定义的。

如果我只执行 printf("%c",9474),我会再次得到 '^B'

我想解决该问题的一种方法是将 9474 以字节为单位进行转换,然后打印每个八位字节以包含我的 │,但我不知道如何做到这一点。

最佳答案

Oups,C 中的多字节字符处理并不那么容易,需要……字节分析。你的字符是 unicode 字符 U+2502 BOX DRAWINGS LIGHT VERTICAL,因为 9474 是 0x2502。

当您执行 printf("%c",9474) 时,您打印 int 值 0x2502 的低位字节,因此它与 printf("%c",2) 这解释了为什么您将 Ctrl B 表示为 ^B

因为你的初始字符有一个代码 > 256,它不能放在 char 中,所以你需要将它存储在 wchar_t 中(它是 < 65736 所以它将适合 wchar_t)。您可以简单地将其打印为单个宽字符:

printf("%lc", 9474);

如果您的区域设置与您的终端字符集一致,您应该得到正确的

关于c - 在c中打印多八位字节字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46766218/

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