Proper understanding of the difference between text mode and binary mode is important when using functions that operate on file streams. (See recommendation FIO14-C. Understand the difference between text mode and binary mode with file streams for more information.)
Section 7.19.9.2 of \[ [ISO/IEC 9899:1999|AA. Bibliography#ISO/IEC 9899-1999] \] states the following specific behavior for {{Wiki Markup fseek()}} when opening a binary file in binary mode:
A binary stream need not meaningfully support fseek calls with a whence value of SEEK_END.
...
In addition, footnote 234 of Section 7.19.3 of \ [[ISO/IEC 9899:1999|AA. Bibliography#ISO/IEC 9899-1999] \] has this to say:
Setting the file position indicator to end-of-file, as with fseek(file, 0, SEEK_END), has undefined behavior for a binary stream (because of possible trailing null characters) or for any stream with state-dependent encoding that does not assuredly end in the initial shift state.
Seeking to the end of a binary stream in binary mode with fseek() is not meaningfully supported and, as a result, not a recommended method for computing the size of a file.
Section 7.19.9.4 of \[ [ISO/IEC 9899:1999|AA. Bibliography#ISO/IEC 9899-1999] \] states the following specific behavior for ftell() when opening a text file in text mode: Wiki Markup
For a text stream, its file position indicator contains unspecified information, usable by the fseek function for returning the file position indicator for the stream to its position at the time of the ftell call.
...