Эта программа сортирует строку внутри массивов.Функция сортировки перестает работать без ошибок - C
Функция сортировки останавливая после 3-й раз он работает без компиляции ошибок
int main(){
char * arrP1[] = { "father", "mother", NULL };
char * arrP2[] = { "sister", "brother", "grandfather", NULL };
char * arrP3[] = { "grandmother", NULL };
char * arrP4[] = { "uncle", "aunt", NULL };
char ** arrPP[] = { arrP1, arrP2, arrP3, arrP4 , NULL };
printAllStrings(arrPP);
sort(arrPP);
printAllStrings(arrPP);
return 0;
}
void sort(char ** arrPP[]) {
int i, j, n, pi, pj;
int t;
char * temp;
for (n = 0; n < 8; n++) {
pi = 0;
pj = 0;
printf("round %d\n", n);
for (i = 0; i < (sizeof(arrPP)); i++) {
for (j = 0; arrPP[i][j] != NULL; j++) {
t = 0;
if (i == 0 && j == 0)
continue;
while (1) { // checking wich word is bigger and swiching between them if needed
if (arrPP[pi][pj][t] == arrPP[i][j][t])
continue;
if (arrPP[pi][pj][t] > arrPP[i][j][t]) {
temp = arrPP[pi][pj];
arrPP[pi][pj] = arrPP[i][j];
arrPP[i][j] = temp;
break;
}
else {
break;
}
t++;
}
pi = i;
pj = j;
}
}
}
}
outpot:
(отец, мать)
(сестра, брат, дедушка)
(бабушка)
(дядя, тетя)
раунд 0
раунд 1
раунд 2
ожидается outpot:
(отец, мать)
(сестра, брат, дедушка)
(бабка)
(дядя, тетя)
круглый 0
раунд 1
раунд 2
раунд 3
раунд 4
раунд 5
раунд 6
раунд 7
(тетя, брат)
(отец, дедушка, бабушка)
(мать)
(Siter, дядя)
Что говорит отладчик, когда вы проходите через код? –
Я не знаю, как использовать отладчик в visual studio .. но когда я запускаю программу с отладчиком, она выводит вывод на консоль и показывает предварительный уровень процессора, пока он не достигнет 100%.звучит как бесконечный цикл? –
@ChenKahalany Использовать отладчик довольно просто. Перейдите к строке и нажмите F9, чтобы установить точку останова. Затем нажмите F5, чтобы запустить отладчик, нажмите F10, чтобы сделать шаг. Посмотрите результаты в окне часов. – nikau6