打印下划线字符代替整数0

时间:2016-12-10 14:16:56

标签: c arrays for-loop multidimensional-array cs50

我正在制作十五岁的游戏,从而实现了绘制功能,在终端上打印出棋盘。我的功能如下:

void draw(void)
{
    for(int i=0;i<d;i++)
    {
        for(int j=0;j<d;j++)
        {
            if (board[i][j] != 0)
            {
                printf("%2d ", board[i][j]);
            }
            else
            {
                printf(" _ ");
            }
        }
    printf("\n");
    }
}

它适用于最高3X3的电路板,但对于4X4的电路板,它打印出以下内容:

output

在第二行的第二列中,它打印1,而我希望它打印10。

1 个答案:

答案 0 :(得分:1)

您可以找出单元格编号的最大长度,并使用它来格式化printf

char numstr[20];
int maxlen = sprintf(numstr, "%d", d * d - 1);
...
printf("%*d ", maxlen, board[i][j]);
...
printf("%*c ", maxlen, '_');