Tep 发表于 2022-4-14 17:52:16

C语言 输出的结果乱码了

用C语言输出这个国际象棋棋盘的时候那个黑色部分变成 圹
用的是 Dev-c++
怎么改???
#include<stdio.h>
int main()
{
        int i,j;
        for(i=0;i<8;i++)
        {
                for(j=0;j<8;j++)
                {
                        if((i+j)%2==0)
                        printf("%c%c",219,219);
                        else
                        printf("");
                }
        printf("\n");
        }
        return 0;
}

isdkz 发表于 2022-4-14 17:56:58

请对照 ascii 码表,219 已经超出 ascii 码所能表示的范围:

https://static01.imgkr.com/temp/e19506d2acd141f6bb3d08d7285d917c.png

Tep 发表于 2022-4-14 18:12:43

那ASCII非打印控制字符
怎么输出??
那个黑正方形 22

wp231957 发表于 2022-4-14 18:33:09

Tep 发表于 2022-4-14 18:12
那ASCII非打印控制字符
怎么输出??
那个黑正方形 22

这种字符并非所有终端都能正确显示

傻眼貓咪 发表于 2022-4-14 18:49:05

本帖最后由 傻眼貓咪 于 2022-4-14 18:52 编辑

Tep 发表于 2022-4-14 18:12
那ASCII非打印控制字符
怎么输出??
那个黑正方形 22

自行更改 cmd 控制台(代码页 437)便可。
#include <stdio.h>
#include <stdlib.h>

int main() {
    system("chcp 437");
    printf("%c", 219);
    return 0;
}

代码页 437 是 MS-DOS 编码。

zzxhh628 发表于 2022-4-14 18:54:49

isdkz 发表于 2022-4-14 17:56
请对照 ascii 码表,219 已经超出 ascii 码所能表示的范围:

219应该在ASCII扩展字符里面有。

isdkz 发表于 2022-4-14 19:05:26

zzxhh628 发表于 2022-4-14 18:54
219应该在ASCII扩展字符里面有。

没有 ascii 扩展字符的说法,

扩展ascii码 是用来表示 ascii 编码以外的其它编码的,

不是用来表示字符的

zzxhh628 发表于 2022-4-14 19:14:25

isdkz 发表于 2022-4-14 19:05
没有 ascii 扩展字符的说法,

扩展ascii码 是用来表示 ascii 编码以外的其它编码的,


不是还有个128-255的扩展码嘛?

isdkz 发表于 2022-4-14 19:28:29

zzxhh628 发表于 2022-4-14 19:14
不是还有个128-255的扩展码嘛?

对呀,不过那个是用来表示 gbk、utf-8 等等的其它编码的,

不是用来表示字符的

zzxhh628 发表于 2022-4-14 19:37:47

isdkz 发表于 2022-4-14 19:28
对呀,不过那个是用来表示 gbk、utf-8 等等的其它编码的,

不是用来表示字符的

哦,原来如此,谢谢

Tep 发表于 2022-4-15 01:06:09

傻眼貓咪 发表于 2022-4-14 18:49
自行更改 cmd 控制台(代码页 437)便可。




谢谢大佬,输出的问题解决了,ps(就是那个图形有点强差人意,和标准的象棋棋盘有那么一点差距,和输出的图形没啥关系,单纯吐槽一下){:10_266:}{:10_266:}

hornwong 发表于 2022-4-15 10:46:40

{:5_95:}
页: [1]
查看完整版本: C语言 输出的结果乱码了