如何用逗号和新行打印2d数组

时间:2015-04-11 20:12:56

标签: c

int **arr;  //For example: 4 by 3 array

如何用逗号和新行打印2d-array,如下所示?

01, 02, 03, 04  // At last, new line without comma
05, 06, 07, 08 
09, 10, 11, 12

我需要最快的方法来打印它。

3 个答案:

答案 0 :(得分:2)

任何定义为类型双指针的m x n矩阵的简单解决方案是:

/* print a (m x n) matrix */
void mtrx_prn (size_t m, size_t n, float **matrix)
{
    register size_t i, j;

    for (i = 0; i < m; i++)
    {
        char *pad = "[ ";
        for (j = 0; j < n; j++)
        {
            printf ("%s%6.3f", pad, matrix [i][j]);
            pad = ", ";
        }
        printf ("%s", " ]\n");
    }
}

<强>输出

$ ./bin/mtrx_dyn_example

[  1.900,  2.800,  3.700,  4.600 ]
[  2.800,  3.700,  4.600,  5.500 ]
[  3.700,  4.600,  5.500,  6.400 ]

只需根据需要调整数据类型(例如intdouble等)。

答案 1 :(得分:0)

您可以使用以下逻辑来实现这一目标。使用条件printf跳过上一学期的逗号。下次发布您尝试过的内容:)

for(int row=0;row<MaxRow;row++)
{
    for(int col=0;col<MaxCol;col++)
    {
        if(col == MaxcCol-1)
            printf(" %d",array[row][col]);
        else
            printf(" %d,",array[row][col]);//comma after %d
    }
    printf("\n");
}

答案 2 :(得分:0)

int row = 3, col=4;
char outbuff[(11+2)*row*col];
register char *p=outbuff;
for(int r = 0; r < row; ++r){
    for(int c = 0; c < col; ++c){
        if(c){
            *p++ =  ',';
            *p++ =  ' ';
        }
        p += sprintf(p, "%02d", arr[r][c]);
    }
    *p++ = '\n';
}
*p = 0;
fputs(outbuff, stdout);