#define _GNU_SOURCE /* for asprintf */ #include /* for free */ #include #define xstr(s) #s #define str(s) xstr(s) #define MAIN(s) int main() { char *quine = "#define _GNU_SOURCE /* for asprintf */\n#include /* for free */\n#include \n#define xstr(s) #s\n#define str(s) xstr(s)\n#define MAIN(s) "s"\nint i = %i;\nMAIN(str(MAIN(s,n)))\n"; char *kid_name; char *temp; asprintf(&temp, quine, 10, 20, 30); asprintf(&kid_name, "Sully_%i.c", 40); FILE *file = fopen(kid_name, "w"); fprintf(file, temp, 50, 60); fclose(file);free(temp);free(kid_name);return 0; } int i = 5; MAIN(str(MAIN(s)))