我想知道是否有可能在C中打印一個二維數組,就像它是在Python中一樣。例如,如果我有int array1[10][10];
然後填入數組然後printf("%li", array1)
似乎不工作。在C,有沒有像printf
,可以打印array1
爲[1, 2, 3, 4]
?在蟒蛇它只是print(array1)
在C中打印二維數組
回答
不幸的是,沒有標準的方式來做到這一點。打印您陣列的方法是:
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可以打印整個數組,因爲數組不僅存儲在數組中,而且作爲存儲其他信息(如數組長度)的數據結構。
有沒有一個函數可以用最簡單的方式寫出來? – tekknolagi 2011-03-03 05:38:04
儘可能避免數組大小文字(DRY原則)。相反,'#define NELTS(a)(sizeof(a)/ sizeof((a)[0]))//數組元素的數量'並且用'NELTS(array1)' – 2011-03-03 05:41:18
直接的答案是「不」......你必須自己編碼。並且不可能在C中編寫一個通用的自卸車例程,因爲數組的大小是未知的。
替換那個'4'那麼它怎麼樣在Python中完成? – tekknolagi 2011-03-03 05:43:43
@tekknolagi「陣列的大小是......已知的」。也就是說,大小被存儲爲數組的屬性並且可以被查詢。大多數現代編程語言都是如此。 – 2011-03-03 05:44:52
哦,我看...那麼在C中有一個基本的實現? – tekknolagi 2011-03-03 05:46:14
更具體地講,印刷在C二維數組時,你需要實現雙for循環:
//僞代碼
- 假設數組名爲myArray
- 獲得陣列的寬度,稱之爲Ĵ
- 得到數組的長度,把它叫做ķ
- 用於:(a = 0;一個<焦耳;一個++){ (b = 0;
- )。 b < k; b ++){
- ........ printf(「%d」,myArray [a] [b]);
- ....}
- }
// Int array [10][10];
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
Print("%d",array[i][j]);
}
}
使用此代碼,你可以打印用C二維數組
它甚至不會在C中編譯。 – gonczor 2018-01-03 10:25:14
- 1. 二維數組C++(輸入和打印)
- 2. C:打印二維數組問題
- 3. C#打印邊框二維數組
- 4. Java - 打印二維數組
- 5. 在Java中打印二維數組
- 6. C#打印二維數組打印分割
- 7. C打印兩維數組
- 8. 在C++中打印一個二維數組
- 9. 在JavaScript中打印二維
- 10. IndexError當試圖打印二維數組
- 11. 打印二維數組列表
- 12. 打印出二維數組PHP
- 13. 二維數組打印與標點
- 14. Java二維數組列打印兩次
- 15. 如何打印Perl二維數組?
- 16. 如何打印二維數組到phpexcel
- 17. 使用pthread打印二維數組
- 18. 輸入和打印二維數組
- 19. 二維數組打印錯誤
- 20. 打印有序二維數組 - 單線
- 21. 打印二維數組的內容
- 22. 從二維數組中分配和打印C
- 23. 如何打印二維數組以控制檯在C#
- 24. I @ 49d67b41打印時試圖打印一個二維數組
- 25. 打印二維數組打印垃圾(魔方)
- 26. 打印出特定格式的二維數組用C
- 27. C:二維數組無法從開始打印
- 28. C程序:打印時的方括號二維字符數組
- 29. 我想從二維數組打印出一些值C++
- 30. 我正在嘗試將二維數組打印到文件中
你的標題提到的二維數組,但你的例子是關於一維數組。那是故意的嗎? – MAK 2011-03-03 05:28:03
否...對不起將修復 – tekknolagi 2011-03-03 05:34:15
這是一個黑客,但'[1,2,3,4]'不是如何打印2D數組。 – 2011-03-03 05:47:26