Почему в VS программа на СИ работает неправильно, хотя в онлайн компиляторе все в порядке?
Онлайн компилятор компилирует при помощи GCC, и скорее всего на Linux системе.
В Visual Studio компилятор Visual C и система Windows.
В Windows строка в текстовых файлых файлах заканчивается двумя символами - \r\n.
В Linux строка заканчивается одним символом - \n.
При записи в текстовый файл символа \n в Windows автоматически добавляется символ \r.
При чтении текстового файла он пропускается.
Соответственно, у вас в reverseOrder получается неправильный pos на который делается fseek т.к. считается в ручную.
Починить это можно двумя способами: или сказать системе что файл бинарный, или вместо ручного подсчёт npos использовать ftell.
Думаю, здесь смогут помочь.