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?