C fopen() function with Examples

04 Sep, 2021
Pre-requisite: Basics of File Handling in CThe fopen() method in C is a library function that is used to open a file to perform various operations which include reading, writing etc. along with various modes. If the file exists then the particular file is opened else a new file is created.
Syntax: 
FILE *fopen(const char *file_name, const char *mode_of_operation);
Parameters: The method accepts two parameters of character type:  
file_name: This is of C string type and accepts the name of the file that is needed to be opened.mode_of_operation: This is also of C string type and refers to the mode of the file access. Below are the file access modes for C: “r” – Searches file. Opens the file for reading only. If the file is opened successfully fopen() loads it into memory and sets up a pointer which points to the first character in it. If the file cannot be opened fopen() returns NULL.“w” – Searches file. If the file exists already, its contents are overwritten. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. It creates a new file for writing only(no reading).“a” – Searches file. If the file is opened successfully fopen() loads it into memory and sets up a pointer that points to the last character in it. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The file is opened only for appending(writing at end of file).“r+” – Searches file. Opens the file for both reading and writing. If opened successfully, fopen() loads it into memory and sets up a pointer which points to the first character in it. Returns NULL, if unable to open the file.“w+” – Searches file. If the file exists, its contents are overwritten. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The difference between w and w+ is that we can also read the file created using w+.“a+” – Searches file. If the file is opened successfully fopen( ) loads it into memory and sets up a pointer which points to the last character in it. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The file is opened for reading and appending(writing at end of file).
file_name: This is of C string type and accepts the name of the file that is needed to be opened.
mode_of_operation: This is also of C string type and refers to the mode of the file access. Below are the file access modes for C: “r” – Searches file. Opens the file for reading only. If the file is opened successfully fopen() loads it into memory and sets up a pointer which points to the first character in it. If the file cannot be opened fopen() returns NULL.“w” – Searches file. If the file exists already, its contents are overwritten. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. It creates a new file for writing only(no reading).“a” – Searches file. If the file is opened successfully fopen() loads it into memory and sets up a pointer that points to the last character in it. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The file is opened only for appending(writing at end of file).“r+” – Searches file. Opens the file for both reading and writing. If opened successfully, fopen() loads it into memory and sets up a pointer which points to the first character in it. Returns NULL, if unable to open the file.“w+” – Searches file. If the file exists, its contents are overwritten. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The difference between w and w+ is that we can also read the file created using w+.“a+” – Searches file. If the file is opened successfully fopen( ) loads it into memory and sets up a pointer which points to the last character in it. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The file is opened for reading and appending(writing at end of file).
“r” – Searches file. Opens the file for reading only. If the file is opened successfully fopen() loads it into memory and sets up a pointer which points to the first character in it. If the file cannot be opened fopen() returns NULL.“w” – Searches file. If the file exists already, its contents are overwritten. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. It creates a new file for writing only(no reading).“a” – Searches file. If the file is opened successfully fopen() loads it into memory and sets up a pointer that points to the last character in it. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The file is opened only for appending(writing at end of file).“r+” – Searches file. Opens the file for both reading and writing. If opened successfully, fopen() loads it into memory and sets up a pointer which points to the first character in it. Returns NULL, if unable to open the file.“w+” – Searches file. If the file exists, its contents are overwritten. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The difference between w and w+ is that we can also read the file created using w+.“a+” – Searches file. If the file is opened successfully fopen( ) loads it into memory and sets up a pointer which points to the last character in it. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The file is opened for reading and appending(writing at end of file).
“r” – Searches file. Opens the file for reading only. If the file is opened successfully fopen() loads it into memory and sets up a pointer which points to the first character in it. If the file cannot be opened fopen() returns NULL.
“w” – Searches file. If the file exists already, its contents are overwritten. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. It creates a new file for writing only(no reading).
“a” – Searches file. If the file is opened successfully fopen() loads it into memory and sets up a pointer that points to the last character in it. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The file is opened only for appending(writing at end of file).
“r+” – Searches file. Opens the file for both reading and writing. If opened successfully, fopen() loads it into memory and sets up a pointer which points to the first character in it. Returns NULL, if unable to open the file.
“w+” – Searches file. If the file exists, its contents are overwritten. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The difference between w and w+ is that we can also read the file created using w+.
“a+” – Searches file. If the file is opened successfully fopen( ) loads it into memory and sets up a pointer which points to the last character in it. If the file doesn’t exist, a new file is created. Returns NULL, if unable to open the file. The file is opened for reading and appending(writing at end of file).
Return Value: The function is used to return a pointer to FILE if the execution succeeds else NULL is returned. 
Example 1:  
C
// C program to illustrate fopen() #include <stdio.h>#include <stdlib.h> int main(){     // pointer demo to FILE    FILE* demo;     // Creates a file "demo_file"    // with file access as write-plus mode    demo = fopen("demo_file.txt", "w+");     // adds content to the file    fprintf(demo, "%s %s %s", "Welcome",            "to", "GeeksforGeeks");     // closes the file pointed by demo    fclose(demo);     return 0;}
On running the following command, a new file will be created by the name “demo_file” and with the following content: 
Welcome to GeeksforGeeks
Example 2: Now if we wish to look into the file then we need to run the following code, which will open the file and display its content. 
C
// C program to illustrate fopen() #include <stdio.h> int main(){     // pointer demo to FILE    FILE* demo;    int display;     // Creates a file "demo_file"    // with file access as read mode    demo = fopen("demo_file.txt", "r");     // loop to extract every characters    while (1) {        // reading file        display = fgetc(demo);         // end of file indicator        if (feof(demo))            break;         // displaying every characters        printf("%c", display);    }     // closes the file pointed by demo    fclose(demo);     return 0;}
Output: 
Welcome to GeeksforGeeks
More articles on File Handling in C:  
Basics of File Handling in Cfopen() for an existing file in write modeEOF, getc() and feof() in CFile opening modes(r versus r+)
Basics of File Handling in C
fopen() for an existing file in write mode
EOF, getc() and feof() in C
File opening modes(r versus r+)
 
tr_abhishek
simmytarika5
C-File Handling
C-Functions
C Language
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Unordered Sets in C++ Standard Template Library
Operators in C / C++
Exception Handling in C++
What is the purpose of a function prototype?
TCP Server-Client implementation in C
Smart Pointers in C++ and How to Use Them
Storage Classes in C
'this' pointer in C++
Ways to copy a vector in C++
Arrow operator -> in C/C++ with Examples