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

C++中无法将数字存入二维数组并正常打印,请求排查问题

问题排查与修复:打印char数组全空白的原因

问题根源

你的代码里count初始值为0,第一次循环递增后变为1,后续count依次取1到20(4×5=20)。而ASCII码中1-31都是不可见的控制字符(比如回车、制表符、退格等),这些字符输出到终端时不会显示任何可见内容,所以你看到的全是空白。

修复方案

根据你想要打印的内容,有两种常见修复方式:

1. 打印可见普通字符(从空格开始)

将count初始值设为31,第一次循环后变为32(对应ASCII空格,之后均为可见字符):

int count = 31; // 初始值设为31,第一次循环后变为32(空格)
char counte[4][5] = {{' ',' ',' ',' ',' '},
                     {' ',' ',' ',' ',' '},
                     {' ',' ',' ',' ',' '},
                     {' ',' ',' ',' ',' '}};

for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 5; j++)
    { 
        count++;
        char thing = static_cast<char>(count);
        counte[i][j] = thing;
    }
}

// 打印逻辑不变
for (int i = 0; i < 4; i++)
{
    cout << "\n";
    for (int j = 0; j < 5; j++)
    {
        cout << counte[i][j];
    }
}

2. 打印数字字符(0-19)

如果想打印数字,给count加上48(字符'0'的ASCII码为48,count+n对应数字字符'n'):

int count = 0;
char counte[4][5] = {{' ',' ',' ',' ',' '},
                     {' ',' ',' ',' ',' '},
                     {' ',' ',' ',' ',' '},
                     {' ',' ',' ',' ',' '}};

for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 5; j++)
    { 
        char thing = static_cast<char>(count + 48); // 转换为数字字符
        counte[i][j] = thing;
        count++;
    }
}

// 打印逻辑不变
for (int i = 0; i < 4; i++)
{
    cout << "\n";
    for (int j = 0; j < 5; j++)
    {
        cout << counte[i][j];
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:34:43