Quote:
When a file is opened with update mode, both input and output may be performed on the associated stream. However, output may not be directly followed by input without an intervening call to the fflush function or to a file positioning function (fseek, fsetpos, or rewind), and input may not be directly followed by output without an intervening call to a file positioning function...
So, it turns out that my gcc doesn't require the extra fseek(), but bcc32 and Visual C++ do, consistent with the above quote.