1. Вам отступы расставлять религия не позволяет?
2. У меня программа нормально работает и я не вижу причин почему не должна. Попробуйте проверить что возвращают fseek, ftell и fwrite, теоретически они тоже могут закончиться с ошибкой.
3. Если код на C, то пишите на C, зачем вы подключаете C++ заголовки?