3-2 编写一个函数escape(s,t),将字符串s复制到字符串t中,并在复制过程中将换行符、制表符等不可见的字符分别转换成\n,\t等相应的可见的转义字符。再编写一个相反过程的函数。
#include <stdio.h> void escape(char s[],char t[]); void unescape(char s[],char t[]); int main() { char s1[100]="ni hao ma wohenhao xiexie"; char t[100]; char s2[100]="Hello,\n\tWorld! \\Mistakee\0 was Extra"; escape(s1,t); unescape(s2,t); return 0; } void escape(char s[],char t[]) { int i=0; int j=0; while(s[i]) { switch (s[i]){ case ' ': t[j]='\\'; t[++j]='0'; break; case '\t': t[j]='\\'; t[++j]='t'; break; case '\n': t[j]='\\'; t[++j]='n'; break; default: t[j]=s[i]; } i++; j++; } t[j]='\0'; for(int k=0;t[k]!='\0';k++) { printf("%c",t[k]); } printf("\n"); } void unescape(char s[],char t[]) { int i=0; int j=0; while(s[i]) { switch (s[i]){ case '\\':要用\\,这里也要用转义字符 switch (s[++i]){ case 't': t[j]='\t'; break; case '0': t[j]='\0'; break; case 'n': t[j]='\n'; break; default: t[j]='\\'; i--; //j++; break; } break; default: t[j]=s[i]; break; } i++; j++; } t[j]='\0'; for(int k=0;t[k]!='\0';k++) { printf("%c",t[k]); } printf("\n"); }