Courses βeta
C Programming

## fopen()

In C, fopen() is used to open a file in different modes. To open a file in write mode, “w” is specified. When mode “w” is specified, it creates an empty file for output operations.

What if the file already exists?
If a file with the same name already exists, its contents are discarded and the file is treated as a new empty file. For example, in the following program, if “test.txt” already exists, its contents are removed and “GeeksforGeeks” is written to it.

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp = fopen("test.txt", "w");
if (fp == NULL)
{
puts("Couldn't open file");
exit(0);
}
else
{
fputs("GeeksforGeeks", fp);
puts("Done");
fclose(fp);
}
return 0;
}


The above behavior may lead to unexpected results. If programmer’s intention was to create a new file and a file with same name already exists, the existing file’s contents are overwritten.

The latest C standard C11 provides a new mode “x” which is exclusive create-and-open mode. Mode “x” can be used with any “w” specifier, like “wx”, “wbx”. When x is used with w, fopen() returns NULL if file already exists or could not open. Following is modified C11 program that doesn’t overwrite an existing file.

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp = fopen("test.txt", "wx");
if (fp == NULL)
{
puts("Couldn't open file or file already exists");
exit(0);
}
else
{
fputs("GeeksforGeeks", fp);
puts("Done");
fclose(fp);
}
return 0;
}


## Recent Comments

### Feedback

For any feedback,email us at feedback@geeksforgeeks.org

### Report a Bug

For any report or bug,email us at support@geeksforgeeks.org