#include #include #include /* Exercise 3-2. Write a function escape(s, t) that converts characters like newline and tab into visible escape sequences like \n and \t as it copies the string t to s. Use a switch. Write a function for the other direction as well, converting escape sequences into the real characters. */ int escape(char s[], char t[]) { int outputPos = 0; for (int i=0; s[i]!='\0';++i) { switch(s[i]) { case '\n': t[outputPos++] = '\\'; t[outputPos++] = 'n'; break; case '\t': t[outputPos++] = '\\'; t[outputPos++] = 't'; break; case '\r': t[outputPos++] = '\\'; t[outputPos++] = 'r'; break; case '\\': t[outputPos++] = '\\'; t[outputPos++] = '\\'; break; case '\'': t[outputPos++] = '\\'; t[outputPos++] = '\''; break; case '\"': t[outputPos++] = '\\'; t[outputPos++] = '\"'; break; case '\v': t[outputPos++] = '\\'; t[outputPos++] = 'v'; break; case '\f': t[outputPos++] = '\\'; t[outputPos++] = 'f'; break; case '\b': t[outputPos++] = '\\'; t[outputPos++] = 'b'; break; case '\a': t[outputPos++] = '\\'; t[outputPos++] = 'a'; break; default: t[outputPos++] = s[i]; break; } } t[outputPos] = '\0';//add null char } int escapeReverse(char t[], char s[]) { int outputPos = 0; for (int i=0; t[i]!='\0';++i) { switch(t[i]) { case '\\': if (t[i+1] == 'n'){s[outputPos++] = '\n'; ++i; break;} if (t[i+1] == 't'){s[outputPos++] = '\t'; ++i; break;} if (t[i+1] == 'r'){s[outputPos++] = '\r'; ++i; break;} if (t[i+1] == 'v'){s[outputPos++] = '\v'; ++i; break;} if (t[i+1] == 'f'){s[outputPos++] = '\f'; ++i; break;} if (t[i+1] == 'b'){s[outputPos++] = '\b'; ++i; break;} if (t[i+1] == 'a'){s[outputPos++] = '\a'; ++i; break;} if (t[i+1] == '\''){s[outputPos++] = '\''; ++i; break;} if (t[i+1] == '\"'){s[outputPos++] = '\"'; ++i; break;} if (t[i+1] == '\\'){s[outputPos++] = '\\'; ++i; break;} break; default: s[outputPos++] = t[i]; break; } } s[outputPos] = '\0';//add null char } int main(void) { char s[] = "Yes\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tYes\r\nNo\n\'\"\\\vYes\f\b\aNo\n"; int length = strlen(s); int originalLength = length; for (int i=0;i