/* copies input to output, replacing each tab, backspace, and * backslash with their escaped equivalents. */ #include void escape(char s[], char t[]) { int i, j; for (i = j = 0; t[i] != '\0'; i++) { switch (t[i]) { case '\n': s[j++] = '\\'; s[j++] = 'n'; break; case '\t': s[j++] = '\\'; s[j++] = 't'; break; case '\b': s[j++] = '\\'; s[j++] = 'b'; break; case '\\': s[j++] = '\\'; s[j++] = '\\'; break; default: s[j++] = s[i]; break; } } s[j] = '\0'; } /* converts escape sequences into real characters */ void unescape(char s[], char t[]) { int i, j; for (i = j = 0; t[i] != '\0'; i++) { if (t[i] == '\\') switch (t[++i]) { case 't': s[j++] = '\t'; break; case 'n': s[j++] = '\n'; break; case 'b': s[j++] = '\b'; break; case 'a': s[j++] = '\a'; break; default: s[j++] = t[i]; break; } else s[j++] = t[i]; } }