У меня есть массив 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 'отлично работает.
Итак, есть идеи, что происходит?
P.S. когда я изменяю циклы while на for, это работает, но только если я знаю длину 'узлов'