2011-03-03 151 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