Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

should I use fseek SEEK_END [duplicate]

Tags:

c

fseek

My question is simple:

Should I use fseek with SEEK_END to get to the end of a file and then get the length of it ? Because in the man it is said:

  • Library implementations are allowed to not meaningfully support SEEK_END (therefore, code using it has no real standard portability).

Right now I am using stat (from C) which is better ?

like image 814
rXp Avatar asked Sep 06 '25 23:09

rXp


2 Answers

The ftell function returns a long, which means that on an ILP32 system you can't correctly get the size of a file larger than 2GB. You should use the stat function or similar to get the size of a file; check the manual for the operating system you're targeting in case you have use a different function name (stat64) or define a preprocessor macro to get the desired behavior for large files.

like image 155
Joni Avatar answered Sep 10 '25 07:09

Joni


Since C++ inherits fseek and SEEK_END from C, I'm quoting the C standard here:

C11(ISO/IEC 9899:201x) §7.21.9.2 The fseek function section 3

A binary stream need not meaningfully support fseek calls with a whence value of SEEK_END.

like image 36
Yu Hao Avatar answered Sep 10 '25 08:09

Yu Hao