win11 cmd 没有点阵字体

在学习转义字符的时候学到了三位八进制 \1~3位八进制数所代表的任意字符
这个时候 printf("%c\n",'\32') 在控制台中显示的是□ 理论上应该显示的是→

我查到的解决办法是在cmd中更改字体为点阵字体
但是我的cmd中没有这个字体
请问要如何解决

同时我还有个疑问 为什么printf("%c\n",26) 和 printf("%c\n",'26') 输出的不一样
万分感谢!

  • 26、'26'肯定不一样,26是整数,'26'是2和6整数的字符串。

    img


print("26 == '26'", 26  == '26')

  • 代码运行效果截屏图片

    img


    “→”中文字符的utf-8编码是“8954”,您可以不用点阵字库的哦。
#!/sur/bin/nve python
# coding: utf-8

print('“→”utf-8汉字编码:', ord('→'))


【以下回答由 GPT 生成】

问题中提到,想要在CMD中输出特殊字符的点阵字体,但是CMD中并没有这个字体。解决这个问题的方式可以通过使用C语言中的Windows API来实现。

首先,我们可以使用Windows API中的SetCurrentConsoleFontEx函数来设置CMD的字体。这个函数可以设置CMD的字体,包括字体名称、大小、样式等。

接下来,我们可以定义一个自定义的字体样式,即点阵字体。比如创建一个数组,每个元素代表一个字符的ASCII码值,并将其对应的点阵图案存储起来。

最后,通过调用SetCurrentConsoleFontEx函数设置字体为自定义的点阵字体,这样就可以在CMD中显示点阵字体了。

以下是一个解决方案的示例代码:

#include <stdio.h>
#include <windows.h>

// 自定义字体样式 - 点阵字体
CONSOLE_FONT_INFOEX fontInfo;
FONT_INFOEX.lfWeight = FW_NORMAL;  // 字体加粗
FONT_INFOEX.dwFontSize.X = 8;  // 设置字体大小为8
FONT_INFOEX.dwFontSize.Y = 8;  // 设置字体大小为8
wcscpy(FONT_INFOEX.FaceName, _T("Terminal"));  // 设置字体为 Terminal

// 设置CMD字体为点阵字体
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &fontInfo);

int main() {
    printf("%c\n", '\32');  // 输出→
    return 0;
}

对于第二个问题,printf("%c\n", 26)printf("%c\n", '26') 的输出结果不一样是因为它们的参数类型不同。

printf("%c\n", 26) 表示输出ASCII码为26的字符,实际上是 control-Z 字符,它在终端中没有可见的显示。

printf("%c\n", '26') 表示输出ASCII码值为 50 的字符,即字符 '2'。因为 '26' 是一个字符字面量,所以会被解析成对应的ASCII码值。

希望以上解决方案对你有帮助。如果有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^