gpt4 book ai didi

C - 打印一个充满 Unicode 符号的数组

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

我想打印一个数组(/字符串),其中填充了 unicode(和普通)符号,例如正方形。

这是我的代码:

#include <stdio.h>

int main()
{
char array[5];
for (int i = 0; i < 4; i++){
array[i]='\u25A1';
}
array[4]='A';
printf("%s", array);
return 0;
}

它只是打印“ííííA◊”。为什么不打印正方形,如何解决?

根据 fileformat.info 广场的

C/C++/Java 源代码为“\u25A0”

我也试过广场的

UTF-8(十六进制),即“0xE2 0x96 0xA0 (e296a0)”

都不行。

最佳答案

array[i] = '\u25A1' 将无法在 C 中正确编译。您至少应该得到一个编译器警告。

'\u25A1'char16_t 类型(每个字符两个字节),这里不相关。

\u 可以用作 escape sequence在字符串文字中,表示 0x10000 以下的 Unicode 代码点。示例:

strcpy(array, u8"\u25A0");
printf(array);
Output: ■

请注意,u8"\u25A0" 基于 UTF8 转换存储为 4 个字节(0xE2、0x96、0xA0 + 空字符)。也可以打印如下(如果控制台支持UTF8输出):

strcpy(array, "\xE2\x96\xA0");
printf(array);
Output: ■

此外,字符串应该以 null 结尾,字符串中的最后一个字符应该为零。

要以字节为单位存储 UTF8,可以按如下方式赋值:

array[0] = 0xE2;
array[1] = 0x96;
array[2] = 0xA0;
array[3] = '\0';

如果你的开发环境支持也可以声明

char array[] = u8"■";

关于C - 打印一个充满 Unicode 符号的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53439353/

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