Создать функцию, которая с использованием функций позиционирования в потоке изменяет содержимое файла "array.dat", переданного ей в качестве параметра. А именно, функция переставляет все нулевые элементы в начало файла. (В этот файл мы записали массив, рандомных интовых элементов).
Проходим по файлу с конца, удаляем все нулевые элементы. Т. е. один указатель для чтения сдвигается постоянно, а второй для записи сдвигается только если там не 0. Когда первый дойдёт до начала файла, записываем от начала до второго нолики.
Само позиционирование для типа FILE* осуществляется функцией fseek.
Для fstream надо использовать методы seekg и seekp.
А вообще, это для массива было бы хорошо, а на файле из-за позиционирования может медленно работать - возможно, надо оптимизировать, но в качестве первого приближения пойдёт.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей