Откройте его в режиме r + (если он уже существует) или + (если он не существует и вы хотите его создать). Поскольку вы ищете 45 байтов до конца файла, я предполагаю, что он уже существует.
fp = fopen(FILEPATH,"r+");
Остальная часть вашего кода в порядке. Также обратите внимание, что это не будет вставлять текст, но будет перезаписывать все, что в данный момент находится в этой позиции в файле.
т.е. если ваш файл выглядит так:
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
Тогда после запуска этого кода он будет выглядеть так:
xxxxxxxtestxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
Если вы действительно хотите вставить, а не перезаписать, вам нужно прочитать весь текст из SEEK_END-45 в EOF в память, записать test , а затем записать текст обратно