программа, которая печатает сама, как это работает?

Я наткнулся на программу, которая печатает сам находится на этом сайте, то есть он печатает программный код.

Программный код:

#include 
char *program = "#include %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";
//what is this line doing, what is the use of %c and %s and what properties of %c and %s are being used here?
int main()
{
        printf(program, 10, 34, program, 34, 10, 10, 10, 10, 10, 10);
        //what is this print function doing, and how?
        return 0;
}

И приведенное объяснение таково:

Здесь используются два ключевых трюка: использование строки со встроенным Спецификатор% s , чтобы строка могла содержать себя при печати, и чтобы использовать спецификатор формата% c, чтобы разрешить печать специальных символов , таких как символы новой строки, которые иначе не могли бы быть встроены в строку вывода .

Я не понимал, как работает программа. Я упомянул строки, в которых мне нужно объяснение, как они работают и что они делают. Пожалуйста, объясните.

18
задан Puppy 7 October 2011 в 17:48
поделиться