Эта строка
printf("end of reading the array");
не имеет перевода строки в конце строки.Это проблема, потому что printf
является частью семейства функций, называемых «буферизованный ввод-вывод».Библиотека C поддерживает буфер вещей, которые вы хотите распечатать, и отправляет их на терминал только в том случае, если буфер заполнен или встречает \n
в потоке символов.Вы не увидите end of reading the array
на своем экране, пока не напечатаете перевод строки.Вы делаете это только после вызова sort()
.Итак, все, что вы знаете, это то, что ваша программа входит в бесконечный цикл в какой-то момент до конца sort
.
Итак, на самом деле есть три цикла, которые могут быть бесконечными: цикл for
, который вы определили,Цикл while
в цикле sort
и цикл for
внутри цикла while
.Как указывают другие ответы, вы допустили классическую ошибку при использовании присваивания в условном while
while (finish = 1)
// ^ not enough equals signs
Если ваш компилятор C действительно старый, он, вероятно, выводит предупреждение в этой строке.Вы должны учитывать предупреждения.
Кроме того, вы должны научиться использовать отладчик раньше, чем позже.Поверьте мне, это сэкономит вам много времени на поиск ошибок.