c - 如何在C和Linux中打印黑桃、红心、方 block 等?

标签 c linux

所以我开始放置一个 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/

相关文章:

c - 异步串行传输C

c - 求冒泡排序的时间复杂度?

c++ - 低级 C/C++ 性能?

objective-c - Objective-C : Anonymous Blocks, 为什么以及何时?

windows - 适用于 Windows 的 ksh ide?

具有不完整列的 Linux 文件排序

linux - ls 输出特定文件的颜色?

php - 'exec() : Unable to fork' on Ubuntu 14. 04.3 LTS

linux - 构建 Google Chrome NaCl 应用程序 .nexe 文件时找不到有效的库

处理结构数组时内存损坏