我想知道是否有可能在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