Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
C Programming
fwrite() fails when called after fread()
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
[QUOTE="Richard Hsu, post: 2459348"] // code #include "stdio.h" int status(FILE * f) { printf("ftell:%d, feof:%s\n", ftell(f), feof(f) != 0 ? "true" : "false"); } int case1() { FILE * f = fopen("c:\\blah", "wb+"); int i = 5; printf("fwrite:%d\n", fwrite(&i,sizeof(int),1,f)); rewind(f); fread(&i,sizeof(int),1,f); status(f); printf("fwrite:%d\n", fwrite(&i,sizeof(int),1,f)); // fails fread(&i,sizeof(int),1,f); // push it to eof status(f); printf("fwrite:%d\n", fwrite(&i,sizeof(int),1,f)); // now successful fclose(f); } int case2() { FILE * f = fopen("c:\\blah", "wb+"); int i = 5; printf("fwrite:%d\n", fwrite(&i,sizeof(int),1,f)); rewind(f); fseek(f,sizeof(int),0); // similar to fread but don't read just move file pointer status(f); printf("fwrite:%d\n", fwrite(&i,sizeof(int),1,f)); // this works fclose(f); } int main() { printf("running case1..\n"); case1(); printf("running case2..\n"); case2(); system("PAUSE"); } //---------------------------------------------------------------------------------------- Hi All, in case1, when i do fread() and then fwrite, fwrite fails to write, it works only when i do another fread() to push the file pointer to eof. can someone help me understand this ? in case2, instead of using fread() if i use fseek() to advance the file pointer ahead, fwrite() works without any problem. i am using ftell() to tell me where the file pointer is at. in both cases, the file pointer is at the same position however in case1 fwrite fails while it works in case2, so my question is a) why fwrite fails ? b) why it works when i use another redundant fread() to push it to eof ? c) why it works in case2 with fseek even though ftell() shows the same position ? thank you in advance. Richard Hsu Toronto, Canada. [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
C Programming
fwrite() fails when called after fread()
Top