new file structure according to subject
This commit is contained in:
56
C/3_Sully/Sully_exploded.c
Normal file
56
C/3_Sully/Sully_exploded.c
Normal file
@@ -0,0 +1,56 @@
|
||||
#define _GNU_SOURCE /* for asprintf */
|
||||
#include <stdlib.h> /* for free and system */
|
||||
#include <stdio.h>
|
||||
#define xstr(s) #s
|
||||
#define str(s) xstr(s)
|
||||
#define FT(s) \
|
||||
int main() \
|
||||
{ \
|
||||
\
|
||||
char *before = \
|
||||
"\
|
||||
#define _GNU_SOURCE /* for asprintf */\n\
|
||||
#include <stdlib.h> /* for free and system */\n\
|
||||
#include <stdio.h>\n\
|
||||
#define xstr(s) #s\n\
|
||||
#define str(s) xstr(s)\n\
|
||||
#define FT(s) \
|
||||
"; \
|
||||
char *quine = s; \
|
||||
char *after = \
|
||||
"\
|
||||
\n\
|
||||
int i = %i;\n\
|
||||
FT(str(FT(s)))\n\
|
||||
"; \
|
||||
\
|
||||
i--; \
|
||||
\
|
||||
char *kid_name; \
|
||||
char *kid_name_c; \
|
||||
char *decremented_after; \
|
||||
char *cmd; \
|
||||
asprintf(&kid_name, "Sully_%i", i); \
|
||||
asprintf(&kid_name_c, "%s.c", kid_name); \
|
||||
\
|
||||
FILE *file = fopen(kid_name_c, "w"); \
|
||||
asprintf(&decremented_after, after, i); \
|
||||
fprintf(file, "%s%s%s", before, quine, decremented_after); \
|
||||
fclose(file); \
|
||||
\
|
||||
asprintf(&cmd, "clang %1$s -o %2$s ; ./%2$s", kid_name_c, kid_name); \
|
||||
printf("cmd: %s\n", cmd); \
|
||||
if (i > 0) \
|
||||
{\
|
||||
system(cmd); \
|
||||
} \
|
||||
\
|
||||
free(kid_name_c); \
|
||||
free(kid_name); \
|
||||
free(decremented_after); \
|
||||
free(cmd); \
|
||||
\
|
||||
return 0; \
|
||||
}
|
||||
int i = 5;
|
||||
FT(str(FT(s)))
|
||||
Reference in New Issue
Block a user