From: Benjamin R. <Ben...@ep...> - 2004-07-25 22:02:40
|
Hi Anders, > Subject: Re: [Mingw-users] libc bug report Just to clarify, Mingw uses the MS runtime library, not GNU libc. OTOH small parts of it, like the macro/inline versions of fputc()/fgetc(), is also defined in the headers. Anders Lind=E9n <mi...@ca...> writes: > void dotheoperation() > { > FILE *file; > int byte; > > if ((file=3Dfopen("file.dat","r+b"))=3D=3DNULL) > throw 0; > > for (int i=3D0; i<8; i++) > fgetc(file); > > fputc(0x20,file); // where does this come in the result file?????? You are probably just missing a call to fflush() (or fseek() or fsetpos()) between fgetc() and fputc() here. Without that the results of switching from reading to writing on the same file are undefined per the C language definition. See the definition of fopen("r+b") in your favorite C reference. > fseek(file,-6,SEEK_CUR); // results in offset 3, which is correct > > fputc(0x21,file); > fputc(0x22,file); > fclose(file); > } benny |