Нет, анонимоус про lseek в тему написал, так как это один из способов получить размер файла. Но если файл большой, то для этого необходимо тоже макросы определять!!!
Тип off_t, который возвращает lseek 32-х разрядный. А stat64 в поле st_size возвращает какую-то чепуху. Как же все-таки получить правильный размер файла больше чем 4G?
lseek можно юзать как способ получения размера, но только если все остальные уже исчерпаны :) Чем он плох, так это тем что на разных файлухах его стоимость разная, так что поведение программы в момент написания будет не совсем понятным.
Нужно скомпилить программу с ключом -D_FILE_OFFSET_BITS=64 -D _GNU_SOURCE. Тогда поле структуры stat st_size будет 8-ми байтовым. И еще. Ни в коем случае не используйте ключ -malign-double. Иначе все системные структуры, у которых есть поля с типами long long и double 'поплывут'