Если вы имеете дело с целым файлом, содержащим только записи фиксированного размера (что, кажется, имеет место), вы можете использовать stat, чтобы получить общий размер файла. stat получает эту информацию из самой файловой системы, поэтому вам не нужно открывать файл заранее. На моем linux box эта программа делает свое дело:
int main() {
const char * const filename = "/bin/ls";
struct stat buf;
if ( 0 == stat(filename, &buf) ) {
printf("File: %s - Size: %d\n", filename, buf.st_size);
}
return 0;
}
Программа, приведенная выше, печатает общий размер двоичного файла ls. Когда у вас есть общий размер файла, все, что вам нужно сделать, это разделить его на размер структуры, представляющей записи. Это даст вам общее количество записей в файле.