練習 3-2 編寫一個函式escape(s, t),將字串t 複製到字串s 中,並在複製過程中將換行符、製表符等不可見字元分別轉換為\n、\t等相應的可見的轉義字元序列。要求使用swich語句。
阿新 • • 發佈:2019-02-13
要將所有的轉義字元都進行轉換,分支會有很多,在這裡以換行符和製表符為例進行轉換。
#include<stdio.h>
void escape(char s[],char t[]);
void unescape(char s[],char t[]);
int main(){
char s[50]="";
char t[50]="Hello\tworld\n";
char u[50]="";
int i=0;
escape(s,t);
while(s[i]){
printf("%c",s[i++]);
}
printf ("\n");
unescape(u,s);
i=0;
while(u[i]){
printf("%c",u[i++]);
}
return 0;
}
void escape(char s[],char t[]){
int i=0,j=0;
while(t[i]){
switch(t[i]){
case '\n':
s[j++]='\\';
s[j++]='n';
break;
case '\t':
s[j++]='\\';
s[j++]='t';
break;
default:
s[j++] = t[i];
}
++i;
}
s[j]='\0';
}
void unescape(char s[],char t[]){
int i=0,j=0;
while(t[i]){
switch(t[i]){
case '\\':
switch (t[i+1]){
case 't':
s[j++]='\t';
i++;
break;
case 'n':
s[j++]='\n';
i++;
break;
default:
s[j++]='\\';
}
break;
default:
s[j++]=t[i];
}
++i;
}
s[j]='\0';
}
輸出結果如下所示: