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 end of existing data
file pointer position at the top of the file at the end 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


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.