I came across a program that prints itself on this site, i.e. it prints the program code.
The program code is:
#include
char *program
Printf prints the string given as the first argument (in this case the string in *program
) substituting the other arguments where you have a %s or %c
%s means the arguement is a string, %c is a character.
As the note says, it uses %s to print a copy of the program string inside the program string - hence making a copy, and uses the %c to print the characters 10 (new line) and 34 "
For a better understanding, the variable program
could have been written like this:
"#include <stdio.h>\nchar *program = \"%s\";\nint main()\n..."
The idea is, that you run the program, compile it's output, run that program and so on. But this can only been done with %c values 10 for linefeed and 34 for double quote.
char *program = "#include <stdio.h>%cchar *program = %c%s%c;%cint main()%c{%cprintf(program, 10, 34, program, 34, 10, 10, 10, 10, 10, 10);%c return 0;%c}%c";
There is a char pointer name "program" which is used to store the string and %c and %s are format specifiers for char and string arguments respectively.
printf(program, 10, 34, program, 34, 10, 10, 10, 10, 10, 10);
printf function is printing output to console, 10 here is ASCII code for NEWLINE and 34 for " printf parameters are doing
This can be done using File handling. Save the program with any name and put that name in the open directory in fopen command. Like my program's name is hello.cpp.
This is the following program
#include <stdio.h>
#include <iostream>
int main()
{
FILE *fp;
fp=fopen("hello.cpp","r");
char ch;
while((ch=fgetc(fp))!=EOF)
{
printf("%c",ch);
}
}