C program to print source code of itself as output

Write a C program to print source code of itself as output. How to print source code of itself as output in C programming.

Required knowledge

Basic Input Output, File Handling, Macros

How to print source code of itself using __FILE__ macro

Printing source code of a file is no complex. You should only bother about how to get path of current file without user input, rest is simple read and print file contents.

C programming supports various preprocessor directives (macros) for logging and exception handling. Macros such as

__FILE__ expands to path of current file.
__LINE__ expands to current line number where used.
__DATE__ expands to string pointing to today's date.
__TIME__ expands to current time.
__FUNCTION__ expands to current function name where used. C99

To print source code of a program itself as output, you can use __FILE__ to get path of current file.

Program to print source code of itself as output

/**
 * C program to print source code of itself as output
 */

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


int main()
{
    FILE *fPtr;
    
    char ch;
    

    /*
     * __FILE__ is a macro that contains path of current file.
     * Open current program in read mode. 
     */
    fPtr = fopen(__FILE__, "r");


    /* fopen() return NULL if unable to open file in given mode. */
    if (fPtr == NULL)
    {
        /* Unable to open file hence exit */
        printf("\nUnable to open file.\n");
        printf("Please check whether file exists and you have read privilege.\n");
        exit(EXIT_SUCCESS);
    }


    /* Read file character by character */
    while ((ch = fgetc(fPtr)) != EOF)
    {
        printf("%c", ch);
    }
    

    /* Close files to release resources */
    fclose(fPtr);

    return 0;
}

Output

/**
 * C program to print source code of itself as output
 */

#include 
#include 


int main()
{
    FILE *fPtr;

    char ch;


    /*
     * __FILE__ is a macro that contains path of current file.
     * Open current program in read mode.
     */
    fPtr = fopen(__FILE__, "r");


    /* fopen() return NULL if unable to open file in given mode. */
    if (fPtr == NULL)
    {
        /* Unable to open file hence exit */
        printf("\nUnable to open file.\n");
        printf("Please check whether file exists and you have read privilege.\n");
        exit(EXIT_SUCCESS);
    }


    /* Read file character by character */
    while ((ch = fgetc(fPtr)) != EOF)
    {
        printf("%c", ch);
    }


    /* Close files to release resources */
    fclose(fPtr);

    return 0;
}

Happy coding 😉

About Pankaj

Pankaj Prakash is the founder, editor and blogger at Codeforwin. He loves to learn new techs and write programming articles especially for beginners. He works at Vasudhaika Software Sols as a Software Design Engineer and manages Codeforwin. In short Pankaj is Web developer, Blogger, Learner, Tech and Music lover.

Comments and discussion
Have a doubt, write here. I will help my best.
Before commenting you must escape your source code before commenting. Paste your source code inside
<pre><code> ----Your Source Code---- </code></pre>