我想迭代所有(至少 16 位)unicode 字符并用 C 将它们打印在屏幕上。
我知道有相关问题,但他们没有解决问题printf
在C中,但这就是我想要实现的目标,如果可能的话。我认为也许用我不知道的技巧应该是可能的。
因为我想使用 printf,所以我想到了这样的事情:
for (int i = 0x0000; i <= 0xffff; i++) {
//then somehow increment the string
char str[] = "\u25A1\n";
printf("%s", str);
char str[] = "\u25A2\n";
printf("%s", str);
char str[] = "\u25A3\n";
printf("%s", str);
...
}
但是增加unicode码位有点问题,这里\u25A1
。我知道这本身是不可能的,因为有些角色喜欢\u0000
不可打印,编译器说不。但除此之外,我如何从十六进制 0000 增加到 ffff 并用printf
.
If the __STDC_ISO_10646__
宏定义后,宽字符对应于 Unicode 代码点。因此,假设一个语言环境可以代表您感兴趣的字符,您可以printf()
宽字符通过%lc
格式转换:
#include <stdio.h>
#include <locale.h>
#ifndef __STDC_ISO_10646__
#error "Oops, our wide chars are not Unicode codepoints, sorry!"
#endif
int main()
{
int i;
setlocale(LC_ALL, "");
for (i = 0; i < 0xffff; i++) {
printf("%x - %lc\n", i, i);
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)