Фстат будет работать.Но я не совсем уверен, как вы планируете получить размер файла с помощью fseek, если вы также не используете ftell (например, fseek до конца, затем ftell, где вы находитесь).fstat лучше, даже для FILE, поскольку вы можете получить дескриптор файла из дескриптора FILE (через fileno).
stat, fstat, lstat - get file status
int fstat(int fd, struct stat *buf);
struct stat {
…
off_t st_size; /* total size, in bytes */
…
};