练习 3-2 编写一个函数escape(s, t),将字符串t 复制到字符串s 中,并在复制过程中将换行符、制表符等不可见字符分别转换为\n、\t等相应的可见的转义字符序列。要求使用swich语句。

要将所有的转义字符都进行转换,分支会有很多,在这里以换行符和制表符为例进行转换。

#include

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

输出结果如下所示:

练习 3-2 编写一个函数escape(s, t),将字符串t 复制到字符串s 中,并在复制过程中将换行符、制表符等不可见字符分别转换为\n、\t等相应的可见的转义字符序列。要求使用swich语句。_第1张图片

你可能感兴趣的:(C语言学习习题)