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
相关产品推荐
相关产品推荐

