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?
r+: Opens a file in read and write mode. File pointer starts at the beginning of the file. w+: Opens a file in read and write mode. It creates a new file if it does not exist, if it exists, it erases the contents of the file and the file pointer starts from the beginning.
"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).
r+ mode. Purpose. Opens an existing text file for reading purpose. Opens a text file for both reading and writing. fopen Returns if FILE doesn't exists.
Originally Answered: Where is the difference between in 'w' and 'w+' mode of fopen() in PHP or C? fopen with w letter denotes that text is appended to the end of the file, while w+ deletes the content of the file and starts writing new content into the file.
Both r+ and w+ can read and write to a file. However, r+ doesn't delete the content of the file and doesn't create a new file if such file doesn't exist, whereas w+ deletes the content of the file and creates it if it doesn't exist.
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 (1 => ture, 0 => false):

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With