Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用逗号和新行打印二维数组_C - Fatal编程技术网

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”);
但是如何显示您所做的工作,我们可以开发一个更通用、更快速的解决方案呢?最快的方法可能是组合整个缓冲区,然后将其放入。可能是put
printf(“%d”,array[row][col])
在内部
for
循环之后。是的,但如果在for循环之外写入,则会给人一种实体在数组之外的印象-或者只是一种你可以说的样式。哦,这是缺少的
:p
我在
pad
中的更改上方有一个注释行,当我删除它时,我也捕捉到了下一行…作为
pad
的替代,change
format
对于
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);