[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