【发布时间】:2011-07-10 17:56:15
【问题描述】:
我有一个 int 数组,它以在我的代码中其他地方创建的 '\0' 终止。我知道它是空终止的,因为我已经对其进行了测试。
说,对于这个例子,数组是 [7, 8, 9, 11, 12, '\0']
当我将它提供给我的函数时:
int edgesInCluster(Graph *g, int *nodes) {
int count = 0;
int i = 0;
int j = 0;
while(nodes[i] != '\0') {
while(nodes[j] != '\0') {
if(i<j) {
printf("%i %i\n", nodes[i], nodes[j]);
count += isNeighbour(g, nodes[i], nodes[j]);
}
j++;
}
i++;
}
return count;
}
printf 正在输出:
7 7
7 8
7 9
7 11
7 12
什么时候应该输出:
7 8
7 9
7 11
7 12
8 9
8 11
8 12
9 11
9 12
11 12
这意味着由于某种原因,'i' 没有被增加(但我们可以看到它是)或节点 [0] == '\0' 我们知道这是不正确的,因为带有 ' 的循环j' 工作正常。
那么,有什么想法吗?
附:当我将 while 更改为 for 循环时,它可以工作,但前提是我知道“节点”的长度
【问题讨论】: