Я столкнулся с программой, которая печатает себя на этом сайте, то есть она печатает код программы.
Код программы:
#include <stdio.h>
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";
//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, чтобы разрешить печатьспециальные символы, такие как переводы строк, которые иначе нельзя было бы вставить в строку вывода.
Я не понял, как работает программа.Я упомянул строки, которые мне нужны объяснения о том, как они работают и что они делают.Пожалуйста, объясните.