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
我需要最快的方法来打印它。
答案 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 ]
只需根据需要调整数据类型(例如int
,double
等)。
答案 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);