2011-03-03 150 views
-1

我想知道是否有可能在C中打印一个二维数组,就像它是在Python中一样。例如,如果我有int array1[10][10];然后填入数组然后printf("%li", array1)似乎不工作。在C,有没有像printf,可以打印array1[1, 2, 3, 4]?在蟒蛇它只是print(array1)在C中打印二维数组

+2

你的标题提到的二维数组,但你的例子是关于一维数组。那是故意的吗? – MAK 2011-03-03 05:28:03

+0

否...对不起将修复 – tekknolagi 2011-03-03 05:34:15

+1

这是一个黑客,但'[1,2,3,4]'不是如何打印2D数组。 – 2011-03-03 05:47:26

回答

3

不幸的是,没有标准的方式来做到这一点。打印您阵列的方法是:

int array1[] = {1, 2, 3, 4}; 

size_t i = 0; 
for (i = 0; i < 4; i++){ 
    printf("%d ", array1[i]); 
} 

注意,更正确,则可以使用sizeof获取数组的大小:

int array1[] = {1, 2, 3, 4}; 

int i = 0; 
for (i = 0; i < sizeof(array1)/sizeof(int); i++){ 
    printf("%d ", array1[i]); 
} 

有些人会认为,你应该使用size_t而不是int为索引,因为那是sizeof返回。

编辑: Python可以打印整个数组,因为数组不仅存储在数组中,而且作为存储其他信息(如数组长度)的数据结构。

+0

有没有一个函数可以用最简单的方式写出来? – tekknolagi 2011-03-03 05:38:04

+0

尽可能避免数组大小文字(DRY原则)。相反,'#define NELTS(a)(sizeof(a)/ sizeof((a)[0]))//数组元素的数量'并且用'NELTS(array1)' – 2011-03-03 05:41:18

0

直接的答案是“不”......你必须自己编码。并且不可能在C中编写一个通用的自卸车例程,因为数组的大小是未知的。

+0

替换那个'4'那么它怎么样在Python中完成? – tekknolagi 2011-03-03 05:43:43

+0

@tekknolagi“阵列的大小是......已知的”。也就是说,大小被存储为数组的属性并且可以被查询。大多数现代编程语言都是如此。 – 2011-03-03 05:44:52

+0

哦,我看...那么在C中有一个基本的实现? – tekknolagi 2011-03-03 05:46:14

1

更具体地讲,印刷在C二维数组时,你需要实现双for循环:

//伪代码

  1. 假设数组名为myArray
  2. 获得阵列的宽度,称之为Ĵ
  3. 得到数组的长度,把它叫做ķ
  4. 用于:(a = 0;一个<焦耳;一个++){
  5. (b = 0;
  6. )。 b < k; b ++){
  7. ........ printf(“%d”,myArray [a] [b]);
  8. ....}
  9. }
-2
// Int array [10][10]; 
for(i=0;i<10;i++) 
{ 
for(j=0;j<10;j++) 
{ 
Print("%d",array[i][j]); 
} 
} 

使用此代码,你可以打印用C二维数组

+0

它甚至不会在C中编译。 – gonczor 2018-01-03 10:25:14