Difference between r+ and w+ in fopen()

c, fopen

Solution

The main difference is `w+` truncate the file to zero length if it exists or create a new file if it doesn't. While `r+` neither deletes the content nor create a new file if it doesn't exist.

Try these codes and you will understand:

#include <stdio.h>
int main()
{
   FILE *fp;

   fp = fopen("test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}  

and then this

#include <stdio.h>
int main()
{
   FILE *fp;

   fp = fopen("test.txt", "w+");
   fclose(fp);
}   

If you will open `test.txt`, you will see that all data written by the first program has been erased. Repeat this for `r+` and see the result. Here is the summary of different file modes:

Problem

In `fopen("myfile", "r+")` what is the difference between the `"r+"` and `"w+"` open mode? I read this: `"r"` Open a text file for reading. `"w"` Open a text file for writing, truncating an an existing file to zero length, or creating the file if it does not exist. `"r+"` Open a text file for update (that is, for both reading and writing). `"w+"` Open a text file for update (reading and writing), first truncating the file to zero length if it exists or creating the file if it does not exist. I mean the difference is that if I open the file with `"w+"`, the file will be erased first?

Original source

Related problems