#include #include #include #include #include static char n_flag = 0; static char e_flag = 0; static void format(char *str) { for (size_t i = 0; i < strlen(str); i++) { unsigned int c = str[i]; if (c == '\\') { switch (str[i + 1]) { case 'a': c = '\a'; break; case 'n': c = '\n'; break; case 't': c = '\t'; break; case 'c': exit(0); case 'v': c = '\v'; break; case 'r': c = '\r'; break; case 'f': c = '\f'; break; case 'e': c = '\033'; break; case 'b': c = '\b'; break; default: c = '\\'; } i++; } putchar(c); } } int main(int argc, char **argv) { argv++; argc--; for (int i = 0; i < argc; i++) { if (argv[i][0] == '-') { if (strstr(argv[i] + 1, "n")) n_flag = 1; else if (strstr(argv[i] + 1, "e")) e_flag = 1; argc--; argv++; } } for (int i = 0; i < argc; i++) { if (e_flag) format(argv[i]); else fputs(argv[i], stdout); if (i < argc - 1) putchar(' '); } if (!n_flag) putchar('\n'); return 0; }