如何在C中打印多维数组的内容?

问题描述 投票:0回答:2
# include<stdio.h>

int main() {
    int arr[2][2];

    arr[0][0] = 1;
    arr[0][1] = 2;
    arr[1][0] = 3;
    arr[1][1] = 4;

    printf("%d", arr[1]);
    printf("%d", arr[1][0]); 

    return 0;
}

上面代码的输出是无符号整数。

输出:

64222963

如何获得 {3,4} 和 3 的输出?

arrays c multidimensional-array printf
2个回答
4
投票

你的第一个 printf() 语句引用了一个数组 (arr[1]),所以它打印出数组的地址。

你的第二个 printf() 语句打印一个数组元素,但是因为你没有包含结束行(“ ") 在你的第一个 printf() 中,它只是被添加到第一个 printf() 的末尾。


2
投票

除非它是一个字符串并且您正在使用

%s
转换说明符,否则您不能在一次转换中打印整个数组(或二维数组的一行)的内容。要获得所需的输出,您必须单独打印每一行元素:

printf( "{%d, %d}\n", arr[1][0], arr[1][1] );

在更一般的情况下,每行有两个以上的元素,您可以使用循环(最好在它自己的函数中):

void dispArr( int *arr, size_t num_elements, FILE *stream)
{
  fputc( '{', stream);

  for ( size_t i = 0; i < num_elements; i++ )
    fprintf( stream, "%d%s", arr[i], 
      num_elements - i > 1 ? ", " : "}\n" );
}

fprintf
语句的最后一位基本上是说“在每个元素之后输出
, 
,除了最后一个元素,它输出
}\n
”。在您的代码中,您将其称为

dispArr( arr[1], 2, stdout );
© www.soinside.com 2019 - 2024. All rights reserved.