【发布时间】:2017-07-25 23:39:16
【问题描述】:
我只是想在控制台中打印一个填充了 ASCII 框的形状,但输出只是垃圾文本。这是我的代码:
#include <stdio.h>
const char shade_block[] = {
"▒▒██████▒▒\n\
▒████████▒\n\
██████████\n\
▒████████▒\n\
▒▒██████▒▒\n\
"};
int main()
{
printf(shade_block);
return 0;
}
这是输出:
ΓûÆΓûÆΓûêΓûêΓûêΓûêΓûêΓûêΓûÆΓûÆ
ΓûÆΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓûÆ
ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓûê
ΓûÆΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓûÆ
ΓûÆΓûÆΓûêΓûêΓûêΓûêΓûêΓûêΓûÆΓûÆ
代码图片,如果显示不正确。
我正在使用 MinGW-32 使用 C、CodeLite IDE、Windows 10。提前致谢。
【问题讨论】:
-
结果取决于控制台使用的代码页。通常控制台使用 OEM 代码页,当您使用 ANSI 代码页时。您需要使用 Unicode 函数和文本才能正确打印
-
请注意,您不应使用
\终止来创建长字符串——请注意第二行和后续行中的空格。使用字符串连接:"▒▒██████▒▒\n" "▒████████▒\n" "██████████\n" "▒████████▒\n" "▒▒██████▒▒\n",它也处理前导空格。字符串段之间只有空格(代码中的换行符,我的注释中的空格)。反斜杠换行机制在 C90 之前是必需的,但从那时起就没有了。 -
告诉您代码在运行 macOS Sierra 的 Mac 上可以正常运行可能不是什么安慰。