【问题标题】:How to make a malloced 2D array show nothing when printed out?打印时如何使分配的二维数组不显示任何内容?
【发布时间】:2019-10-02 08:08:52
【问题描述】:

我正在开发一款井字游戏,并且有一个用于网格 3x3 的 malloced 2D 字符数组。

我测试打印了数组中的值并得到0。我计划在数组输出周围制作一个网格,但要使其正常工作,输出必须为空而不是0。请帮助我希望输出什么都没有。

/*Malloced Array*/

array = (char**)malloc(sizeof(char) * row);

for(ii = 0; ii < row; ii++)
{
    arraySec = (char*)malloc(sizeof(char) * col);
    array[ii] = arraySec;
}

/*Test Print*/
for(ii = 0; ii < row; ii++)
{
    for(jj = 0; jj < col; jj++)
    {
        printf("\n%d:%d = %d", ii, jj, array[ii][jj]);
    }
}

这是输出:

0:0 = 0

0:1 = 0

0:2 = 0

1:0 = 0

1:1 = 0

1:2 = 0

2:0 = 0

2:1 = 0

2:2 = 0

【问题讨论】:

  • 当您说您希望输出为“无”时,您的实际意思是什么?你想要一个空白(空格)字符输出吗?
  • 是的,它可以是空的,空格。就在打印出来时,它必须不显示在屏幕上。但是,如果我将说 X 或 O 的字符放入数组中,我希望该字符显示出来。
  • malloc 由于某种原因默认为 '0'。我可以将一个空字符串“”作为每个数组元素,还是有比硬编码更好的方法?
  • 完全正确 - 查看答案!

标签: c arrays malloc


【解决方案1】:

好的,因此,如果您想为尚未“使用”的任何网格位置(即其中包含 OX)打印“空格”字符(即不显示任何内容),那么您需要在代码中添加/更改两件事。

首先,您需要将数组初始化为空白字符:

for(ii = 0; ii < row; ii++) {
    for(jj = 0; jj < col; jj++) {
        array[ii][jj] = ' '; // Set to the blank (space) character
    }
}

然后,在您的“测试打印”中,您需要将字符输出为字符 - 而不是数字(整数):

for(ii = 0; ii < row; ii++) {
    for(jj = 0; jj < col; jj++) {
        printf("\n%d:%d = %c", ii, jj, array[ii][jj]); // %c will print the character as such, but you won't see it!
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多