You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何打印unsigned char数组中值为178的字符?

问题:C语言中无法通过ASCII值178打印▒字符

我想在C语言中打印字符▒,原本打算把它和ASCII值小于127的标准字符一起存在char数组里。知道这个字符的ASCII十进制值是178后,我把数组改成了unsigned char类型来支持0-255的取值。现在用\u2592能正常打印这个字符,但遍历数组打印时,ASCII小于127的字符都显示正常,唯独值为178的字符显示不出来,求解决办法。

代码示例

#include <stdio.h>
#include <stdlib.h>

int main(void) {

    printf("Raw unicode call: \\u2592\n");

    unsigned char array[2][3] = {
        { 35, 0x26, 0x27 },
        { 0x28, 0x29, 0x2A }
    };

    array[1][2] = 178;

    for (int i=0; i<2; i++) {
        for (int j=0; j<3; j++) {
            printf("Array[%d][%d]: %c\n", i, j, array[i][j]);
        }
    }
}

运行输出

Raw unicode call: ▒
Array[0][0]: #
Array[0][1]: &
Array[0][2]: '
Array[1][0]: (
Array[1][1]: )
Array[1][2]:  

解决办法

核心原因

你说的178是DOS/Windows OEM字符集(比如CP437)里▒的单字节编码,但现在绝大多数终端默认用的是UTF-8编码。UTF-8中▒的编码是三个字节的0xE2 0x96 0x92,不是单字节的178。直接把178存到数组里,终端按UTF-8解析时会识别为无效编码,所以显示空白。

具体方案

方案1:切换终端到OEM编码(兼容性差)

如果是Windows命令行,执行chcp 437切换到CP437编码,再运行程序就能正常显示178对应的▒。但这种方法只适用于传统CMD终端,VS Code、Windows Terminal等现代终端可能不支持,跨平台也无效。

方案2:用宽字符处理(推荐)

使用wchar_t宽字符数组存储Unicode字符,配合wprintf打印,同时设置本地化确保输出正常:

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main(void) {
    setlocale(LC_ALL, ""); // 初始化本地化,让宽字符输出适配终端编码
    wprintf(L"Raw unicode call: %lc\n", L'\u2592');

    wchar_t array[2][3] = {
        { L'#', L'&', L'\'' },
        { L'(', L')', L'\u2592' }
    };

    for (int i=0; i<2; i++) {
        for (int j=0; j<3; j++) {
            wprintf(L"Array[%d][%d]: %lc\n", i, j, array[i][j]);
        }
    }
    return 0;
}

方案3:直接存储UTF-8字节序列

如果坚持用unsigned char数组,可以把▒的UTF-8三字节序列存进去,打印时按字符串输出:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    printf("Raw unicode call: \\u2592\n");

    // 调整数组结构,预留UTF-8多字节空间
    unsigned char array[2][5] = {
        { 35, 0x26, 0x27, 0, 0 },
        { 0x28, 0x29, 0xE2, 0x96, 0x92 }
    };

    // 打印UTF-8编码的▒
    printf("Array[1][2] (UTF-8): %s\n", (char*)&array[1][2]);

    return 0;
}

内容的提问来源于stack exchange,提问作者user23109837

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:33:22