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

标签 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。

最佳答案

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

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

关于c - 打印下划线字符来代替整数 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41076544/

相关文章:

c# - 是否可以将变量传递到 for 循环中?

C编程 : reate 10 Element Array, 冒泡排序算法,返回数组的最小值和最大值

双重自由或腐败的代码

c - libjpeg:一次处理所有扫描线

c - void 名称(类型名称1,类型名称2,类型名称3[名称1][名称2]);

Javascript for 循环不循环遍历数组

java - 创建一个出现在两个给定数组java中的值数组

c++ - 为什么 "initializer-string for array of chars is too long"在 C 中编译良好而不在 C++ 中编译?

c - UPC分配动态数组并排序

javascript - "for"循环的奇怪语法