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");
}
本文介绍了一种方法,用于将包含特殊字符如换行符和制表符的字符串转换为带有转义字符的字符串,并提供了逆向转换的方法。通过两个函数`escape`和`unescape`实现这一功能。

被折叠的 条评论
为什么被折叠?



