1. 程式人生 > >練習 3-2 編寫一個函式escape(s, t),將字串t 複製到字串s 中,並在複製過程中將換行符、製表符等不可見字元分別轉換為\n、\t等相應的可見的轉義字元序列。要求使用swich語句。

練習 3-2 編寫一個函式escape(s, t),將字串t 複製到字串s 中,並在複製過程中將換行符、製表符等不可見字元分別轉換為\n、\t等相應的可見的轉義字元序列。要求使用swich語句。

要將所有的轉義字元都進行轉換,分支會有很多,在這裡以換行符和製表符為例進行轉換。

#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'; }

輸出結果如下所示:

這裡寫圖片描述