[vox-tech] [C] randomly accessing file data in C
Micah J. Cowan
vox-tech@lists.lugod.org
Wed, 21 May 2003 14:05:10 -0700
> > > Er, what? Overwriting part of a file is a normal operation. Kim's
> > > problem is that he's opening the output file in "w+" mode, which
> > > truncates the file.
> >
> > Um, sorry. I was thinking from a comp.lang.c perspective. I never use
> > that technique if I expect it to work on other systems, because as far
> > as the ISO C standard is concerned, writing to any point in the middle of a
> > file may result in truncation, regardless of which mode was used.
>
> If this were true, it would be a major limitation of Standard C... so I
> looked further and found that it is not.
<snip>
> Further, Section 4.9.3 (page 127) line 12 says:
>
> Binary files are not truncated, except as defined in 4.9.5.3. Whether a
> write on a text stream causes the associated file to be truncated beyond
> that point is implementation-defined.
>
> Truncation is mentioned only with regard to specific file open modes.
> "r+b" has no mention of truncation.
Huh! I must've just remembered the stuff for text streams and thought
I'd seen it to be true in general! I stand corrected.
> In short, I think binary updates without truncation _are_ supported in
> C89. (whew!) I don't have a copy of C99... perhaps you can check there.
I do, but I seriously doubt it has been changed there.
-Micah, doesn't know *what* he was smoking...