fopen() prototype
FILE* fopen (const char* filename, const char* mode);
The fopen()
function takes a two arguments and returns a file stream associated with that file specified by the argument filename.
It is defined in <cstdio> header file.
Different types of file access mode are as follows:
File Access Mode | Interpretation | If file exists | If file doesn't exist |
---|---|---|---|
"r" | Opens the file in read mode | Read from start | Error |
"w" | Opens the file in write mode | Erase all the contents | Create new file |
"a" | Opens the file in append mode | Start writing from the end | Create new file |
"r+" | Opens the file in read and write mode | Read from start | Error |
"w+" | Opens the file in read and write mode | Erase all the contents | Create new file |
"a+" | Opens the file in read and write mode | Start writing from the end | Create new file |
fopen() Parameters
- filename: Pointer to the string containing the name of the file to be opened.
- mode: Pointer to the string that specifies the mode in which file is opened.
fopen() Return value
- If successful, the
fopen()
function returns a pointer to the FILE object that controls the opened file stream. - On failure, it returns a null pointer.
Example 1: Opening a file in write mode using fopen()
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int c;
FILE *fp;
fp = fopen("file.txt", "w");
char str[20] = "Hello World!";
if (fp)
{
for(int i=0; i<strlen(str); i++)
putc(str[i],fp);
}
fclose(fp);
}
When you run the program, it will not generate any output but will write "Hello World!" to the file "file.txt".
Example 2: Opening a file in read mode using fopen()
#include <cstdio>
using namespace std;
int main()
{
int c;
FILE *fp;
fp = fopen("file.txt", "r");
if (fp)
{
while ((c = getc(fp)) != EOF)
putchar(c);
fclose(fp);
}
return 0;
}
When you run the program, the output will be [Assuming the same file as in Example 1]:
Hello World!
Example 3: Opening a file in append mode using fopen()
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int c;
FILE *fp;
fp = fopen("file.txt", "a");
char str[20] = "Hello Again.";
if (fp)
{
putc('\n',fp);
for(int i=0; i<strlen(str); i++)
putc(str[i],fp);
}
fclose(fp);
}
When you run the program, it will not generate any output but will append "Hello Again" in a newline to the file "file.txt".