File opening modes(r versus r+)

A file has to be opened before the beginning of reading and writing operations. Opening a file creates a link between the operating system and the file function.

Syntax for opening a file:

  FILE *fp;
  fp = fopen( " filename with extension ", " mode " );

Opening of file in detail:
FILE: structure defined in stdio.h header file. FILE structure provides us the necessary information about a FILE.
fp: file pointer which contains the address of the structure FILE.
fopen(): this function will open file with name “filename” in specified “mode”.

Different reading modes:

  1. r
  2. r+
  3. for binary files: rb, rb+, r+b

Difference:

r mode 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 NULL Create New File
fopen returns if FILE exist Returns a pointer to the FILE object. New data is written at the start of existing data
file pointer position at the first char of the file at the first char of the file

C program for opening file in r mode:

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <stdio.h>
  
void main()
{
    FILE* fp;
    char ch;
    // Open file in Read mode
    fp = fopen("INPUT.txt", "r+");
  
    // data in file: geeksforgeeks
  
    while (1) {
        ch = fgetc(fp); // Read a Character
        if (ch == EOF) // Check for End of File
            break;
  
        printf("%c", ch);
    }
    fclose(fp); // Close File after Reading
}

chevron_right


Output:

geeksforgeeks

Note: File opened should be closed in the program after processing.

C program for opening file in r+ mode:

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <stdio.h>
  
void main()
{
    FILE* fp;
    char ch;
    // Open file in Read mode
    fp = fopen("INPUT.txt", "r+");
  
    // content of the file:geeksforgeeks
  
    while (1) {
        ch = fgetc(fp); // Read a Character
        if (ch == EOF) // Check for End of File
            break;
  
        printf("%c", ch);
    }
    fprintf(fp, " online reference.");
  
    fclose(fp); // Close File after Reading
  
    // content of the file: geeksforgeeks online reference.
  
    fp = fopen("INPUT.txt", "r+"); // Open file in r + mode
    while (1) {
        ch = fgetc(fp); // Read a Character
        if (ch == EOF) // Check for End of File
            break;
  
        printf("%c", ch);
    }
    fclose(fp);
}

chevron_right


Output:

geeksforgeeks online reference


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : rishiSingh2



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.