gpt4 book ai didi

c 没有正确打印 "┌──┐"字符

转载 作者:可可西里 更新时间:2023-11-01 10:19:13 25 4
gpt4 key购买 nike

下午好,我的 C 代码遇到问题,我不知道是什么原因造成的。

每次我尝试打印这样的字符:“┌──┐”我的程序只是打印一些奇怪的字符,就像这个截图:

screenshot of my terminal output

我在 Windows 上使用 Qt Creator,Qt 版本 5.5.0 MSVC 64 位。编译器是 Microsoft Visual C++ Compiler 12.0 (amd64)。

我尝试更改区域设置但没有成功。我发现打印这些字符的唯一方法是使用 ASCII 代码将它们定义为 int 变量并打印它们,但这导致了一些非常广泛和丑陋的编码,如下所示:

int cSupEsq = 218;  //'┌'
int cSupDir = 191; //'┐'
int cInfEsq = 192; //'└'
int cInfDir = 217; //'┘'
int mVert = 179; //'│'
int mHor = 196; //'─'
int espaco = 255; //' '
int letraO = 111; //'o'

//Inicia limpando a tela da aplicação
clrscr();

//Linha 1
printf("%c", cSupEsq);
for (i = 1; i < 79; i++) { printf("%c", mHor); }
printf("%c", cSupDir);

有什么方法可以使程序正确处理这些字符?是什么导致了这个问题?

最佳答案

使用 OEM 代码点的解决方案是正确的方法,代码页 850/437 是控制台的默认代码页,因此应该可以工作。您也可以使用 SetConsoleOutputCP以确保控制台使用正确的代码页。

话虽如此,当您不使用解决方法时发生的情况是源文件是使用不同的代码页保存的,即。不是代码页 850/437。源代码的内存表示是 Unicode(可能是 UTF-8),当您保存文件时,字符的内存表示将映射到文件的目标代码页。

您可以做的是使用 850/437 代码页作为目标保存文件,我不知道您如何在 Qt Creator 中执行此操作(如果您完全可以的话),例如在 Visual Studio 中您可以选择单击保存按钮上的向下箭头并选择“使用编码保存”,然后您可以继续选择目标代码页,在您的情况下为代码页 850。这将确保内存中的代码点正确映射到要编译的文件.

我希望这有助于解释问题。

关于c 没有正确打印 "┌──┐"字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33904089/

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