Я думаю, что нет простого способа сделать то, что вы хотите. Записи имеют переменную длину, и никакая длина не может быть определена заранее, верно?
Если файл всегда один и тот же (или, по крайней мере, не часто изменяется), я бы поместил его в базу данных или, по крайней мере, создал индексный файл (номер записи: смещение) и использовал бы эту функцию fseek ()