ну, strlen тут точно лишнее.
да и ансет - тоже.
ftruncate будет быстрее, чем весь-то файл писать.
и вообще - вы все работаете с массивом.
как-то у вс, неправильное, имхо, сложилось тождество файл==массив. просто без оговорок у вас файл бац - и уже массив. Вы о нем думаете, как о массиве.
Отсюда и непонятки - в каком месте у файла ансет?
Вполне такие вещи можно делать, не представляя файл в виде массива