[vox-tech] [C] randomly accessing file data in C
Ken Herron
vox-tech@lists.lugod.org
Wed, 21 May 2003 09:50:38 -0700
--On Wednesday, May 21, 2003 09:05:15 -0700 "Micah J. Cowan"
<micah@cowan.name> wrote:
> On Tue, May 20, 2003 at 06:45:53PM -0700, Mark K. Kim wrote:
>> Hello...
>>
>> I'm trying to access data in a file in C. I want to read some portion
>> of it, modify it, then rewrite that portion back into the file.
>
> I don't think what you're trying to do is possible. What you *can* do,
> is read in the file in chunks of an appropriate size for keeping in
> memory, and writing them out to a new (temporary) file as you go. As
> soon as you reach the spot you need to modify, you just modify the
> data you are going to write out to the new file, and then copy the
> tail end of the original, chunk-by-chunk, into the temporary file.
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.
The copy-and-modify scheme you outline is generally used to replace a
chunk of the file with a different-sized chunk, e.g. to replace some text
within a text file.
--
Kenneth Herron Kherron@newsguy.com 916-366-7338