我在找到阵列上的元素时遇到了麻烦。
我有一个元素的二维数组t_elem **array
。
对于数组的大小,我使用了带有#define SIZE_X 45
和#define SIZE_Y 35
的malloc函数。似乎没有任何问题与malloc
struct elem:
typedef struct elem
{
int choice;
int color;
}t_elem;
如果选择了元素, choice
应该是布尔值:1
,如果不是,则0
。
我将所有元素初始化为0
,array[3][17]
除外(第3列和第17行)
当我想访问选择的元素时,我使用以下代码:
array[3][17].choice = 1;
while(array[i][j].choice != 1 && i < SIZE_X && j < SIZE_Y)
{
i++;
j++;
}
printf("%d %d\n",i,j);
我希望printf()
返回3 17
,但我得到的只是35 35
我在C中表现不佳,我可能会遗漏一些明显的东西。有什么帮助吗?
答案 0 :(得分:0)
问题是,您在每次迭代中都会递增i
和j
。这只会给你像
array[0][0]
array[1][1]
array[2][2]
...
这里需要的是一个嵌套循环。
示例pesudocode:
for (i = 0; i < SIZE_X; i++)
for (j = 0; j < SIZE_Y; j++) //for a particular value of i, traverse all values of j
{
if (array[i][j].choice == 1)
printf("%d %d\n",i,j);
}