C Program to Write Data into a File

In this article, you will learn and get code for writing some data into a file inside the current directory.

The function fopen() is used to open the file. It takes two arguments: the first one is the name of the file, and the second one is its opening mode. To write some data into a file, we have to use the "w" file opening mode. For example,

fopen("fresherearth.txt", "w");

opens a file named "fresherearth.txt" in the writing mode.

What if the file doesn't exist?

While opening the file using "w" file opening mode, if the file doesn't exist, a new one gets created. Therefore, using the above statement, if the file "fresherearth.txt" does not exist inside the current directory, then it gets created. The current directory is the directory or folder where you are saving your C programs, or the folder in which the program for writing data into a file is saved.

Write data into a file in C

The question is: write a program in C to ask the user to enter the name of a file to open the file, and then again to enter the data to store inside the file. The answer to this question is:

#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    char data[200], fname[30];
    FILE *fp;
    printf("Enter a File Name to Open/Create: ");
    gets(fname);
    fp = fopen(fname, "w");
    if(fp==NULL)
        printf("Error Occurred while Opening/Creating the File!");
    else
    {
        printf("\nEnter the Data: ");
        gets(data);
        while(strlen(data)>0)
        {
            fputs(data, fp);
            fputs("\n", fp);
            gets(data);
        }
    }
    fclose(fp);
    getch();
    return 0;
}

This program was built and runs in the Code::Blocks IDE. Here is its sample run:

c program to write to file

Enter the filename, for example, "fresherearth.txt," and press the ENTER key. If the file entered by you, say "fresherearth.txt," doesn't exist inside the current directory, then it gets created there. The current directory means the directory where you have saved your program, as given above. Now enter some data one by one in a way that, if you want to enter the data for three lines, then enter like this:

Enter every time you start a new line or sentence. If you want to stop writing data into the file, then just press the ENTER key without writing anything before it. Here is its sample run:

write data into file c

As you can see, I've written three lines of data; therefore, a file named fresherearth.txt gets created inside the current directory, and that file contains:

c program write data into file

Modified Version of the Previous Program

Here is the modified version of the above program. This program prints messages one by one so the user knows what is going on inside the program. For example, if a user enters a file that does not exist, a new file is created. However, before creating the file, this program prints a message indicating that a new file is being created... and all of these messages:

#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
    char data[200], fname[30];
    FILE *fp;
    printf("Enter the Name of File to Open/Create: ");
    gets(fname);
    fp = fopen(fname, "r");
    if(fp==NULL)
    {
        printf("\nFile Doesn't Exist!");
        printf("\n\nCreating the File...\n");
        fp = fopen(fname, "w");
        if(fp==NULL)
            printf("\nError occurred while creating the file..");
        else
            printf("\nFile Created Successfully!\n");
    }
    fclose(fp);
    fp = fopen(fname, "w");
    if(fp==NULL)
        printf("\nError occurred while opening the file..");
    else
    {
        printf("\nEnter the Data: ");
        gets(data);
        while(strlen(data)>0)
        {
            fputs(data, fp);
            fputs("\n", fp);
            gets(data);
        }
        printf("\nData is Written into the File Successfully!");
        printf("\nPress any Key to Exit...");
    }
    fclose(fp);
    getch();
    return 0;
}

Assume the user types in a file called fresherearth.html that does not exist in the current directory. The following is a sample run of the above program. This is the initial output:

write data to file in c

Enter the file's name, say fresherearth.html, and press the ENTER key. Because this file is not available in the current folder, a new file gets created, and here is the sample output you will see:

c program write data to file

Now, enter the following information into the file fresherearth.html:

<h1>About Me</h1>
<p>Hello There.</p>
<p>This is an HTML Document.</p>
<p>The name of this file is <u>fresherearth.html</u>.</p>

The above data must be entered in such a way that you first enter the first line, that is:

<h1>About Me</h1>

and then press the ENTER key; enter the second line, which is:

<p>Hello There.</p>

and then press the ENTER key once more. In similar fashion, enter the next two lines. Here is the sample output:

c write content to file

After entering all four lines of data, press ENTER without typing anything to stop writing the data into the file. Here is the output you will see after doing it:

write content to file c

Now press any key to exit the program. Here is a screenshot demonstrating that the file fresherearth.html has already been created using the aforementioned program, within the current folder, of course:

data written to file c

Because it is an a.html file, when you open it in a web browser like Google Chrome, it displays:

file created with content c

The same program in different languages

C Quiz


« Previous Program Next Program »