C 如何使用逗号和新行打印二维数组
如何使用逗号和新行打印二维数组,如下所示C 如何使用逗号和新行打印二维数组,c,C,如何使用逗号和新行打印二维数组,如下所示 int **arr; //For example: 4 by 3 array 我需要最快的打印方法。您可以使用下面的逻辑来实现这一点。使用条件printf跳过上一学期的逗号。下次发布您尝试过的内容:) for(int row=0;row任何定义为类型双指针的m x n矩阵的简单解决方案是: for(int row=0;row<MaxRow;row++) { for(int col=0;col<MaxCol;col++) {
int **arr; //For example: 4 by 3 array
我需要最快的打印方法。您可以使用下面的逻辑来实现这一点。使用条件
printf
跳过上一学期的逗号。下次发布您尝试过的内容:)
for(int row=0;row任何定义为类型双指针的m x n
矩阵的简单解决方案是:
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");
}
只需根据需要调整数据类型(例如,int
,double
,等等)。int row=3,col=4;
$ ./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 ]
煤焦突出[(11+2)*行*列];
寄存器char*p=exputff;
对于(int r=0;r|
最快的是puts(“01、02、03、04\n05、06、07、08\n09、10、11、12”);
但是如何显示您所做的工作,我们可以开发一个更通用、更快速的解决方案呢?最快的方法可能是组合整个缓冲区,然后将其放入。可能是putprintf(“%d”,array[row][col])
在内部for
循环之后。是的,但如果在for循环之外写入,则会给人一种实体在数组之外的印象-或者只是一种你可以说的样式。哦,这是缺少的:p
我在pad
中的更改上方有一个注释行,当我删除它时,我也捕捉到了下一行…作为pad
的替代,changeformat
对于printf()
进行分解可能会更快。是的,但是您仍然必须单独提供第一个元素,而不使用前面的逗号,并让printf分解matrix[i][1]
on。例如:format=“[%6.3f”;对于(…){printf(format,matrix[i][j]);format=“,%6.3f”}puts(“])
Ahh…,这和我想象的完全不同。谢谢你的珍珠。我去测试一下。
/* 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 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);