#include <stdio.h>
void Escape(char, char);
void Unescape(char, char);
main()
{
char a[] = " Hello world !";
char b[] = " ";
Escape(a,b);
printf("%s\n",b);
Unescape(b,a);
printf("%s\n",a);
}
void Escape(char s[], char t[])
{
int i = 0, j = 0;
while(s[i] != '\0')
{
switch(s[i])
{
case '\t':
t[j++] = '\\';
t[j++] = 't';
break;
case '\n':
t[j++] = '\\';
t[j++] = 'n';
break;
default:
t[j++]=s[i];
break;
}
i++;
}
t[j] = '\0';
}
void Unescape(char s[], char t[])
{
int i, j;
for(i=j=0; s[i]!='\0'; i++)
{
if(s[i] != '\\')
t[j++] = s[i];
else
{
/*隐含的判断是s[i]=='\\',所以,
它后续的下一个字符就是转义字符中的字母,即[++i]就是那个字母*/
switch(s[++i])
{
case 'n':
t[j++] = '\n';
break;
case 't':
t[j++] = '\t';
break;
default:
t[j++] = '\\';
t[j++] = s[i];
break;
}
}
}
t[j]='\0';
}