所以我开始放置一个 char 数组 char symbols[52] = { '\x03' , '\x04' 等。 ETC。) 我第一次这样做时,它确实打印了红心、黑桃等。但是在将我的系统区域设置更改为韩语之后(idk,如果这是造成它的原因),它开始给我无关的奇怪符号用它。 我还尝试在另一台计算机上执行此操作,它实际上正确地编译了符号。 然而,然后我尝试将它移到 linux 上,它打印出带有 0 0 0 3 的奇怪方 block 。
有谁知道为什么会出现这些符号,或者是否有更好的方法来打印这些符号?
P.S.: 我在 Windows 中使用 Visual Studio,然后在 Linux 中使用 .c 代码
最佳答案
Linux系统通常使用UTF-8编码,其中:
- ♠ = U+2660 = "\xE2\x99\xA0"
- ♣ = U+2663 = "\xE2\x99\xA3"
- ♥ = U+2665 = "\xE2\x99\xA5"
- ♦ = U+2666 = "\xE2\x99\xA6"
编辑:不幸的是,Windows 命令提示符不支持 UTF-8,而是使用旧的 DOS 代码页。如果你想让你的程序跨平台工作,你必须这样做:
#if defined(_WIN32) || defined(__MSDOS__)
#define SPADE "\x06"
#define CLUB "\x05"
#define HEART "\x03"
#define DIAMOND "\x04"
#else
#define SPADE "\xE2\x99\xA0"
#define CLUB "\xE2\x99\xA3"
#define HEART "\xE2\x99\xA5"
#define DIAMOND "\xE2\x99\xA6"
#endif
关于c - 如何在C和Linux中打印黑桃、红心、方 block 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27133508/