#include #include int main(int argc, char **argv) { char *char_map = calloc(256, sizeof(char)); char *back_map = calloc(256, sizeof(char)); if (argc != 3) { fprintf(stderr, "%s: Must provide two arguments.\n", argv[0]); exit(EXIT_FAILURE); } char *s = argv[1]; char *t = argv[2]; while (*s && *t) { if (char_map[(size_t)*s] && char_map[(size_t)*s] != *t) { fprintf(stderr, "%s: Character `%c` cannot be remapped from `%c` to `%c`.\n", argv[0], *s, char_map[(size_t)*s], *t); exit(EXIT_FAILURE); } if (back_map[(size_t)*t] && back_map[(size_t)*t] != *s) { fprintf(stderr, "%s: Mapping to `%c` cannot be assigned to both `%c` and `%c`.\n", argv[0], *t, back_map[(size_t)*t], *s); exit(EXIT_FAILURE); } char_map[(size_t)*s] = *t; back_map[(size_t)*t] = *s; s++; t++; } if (*s || *t) { fprintf(stderr, "%s: Arguments do not have the same length.\n", argv[0]); exit(EXIT_FAILURE); } return 0; }