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

来源:互联网 发布:淘宝购物车营销价格 编辑:程序博客网 时间:2024/04/26 06:28

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

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

输出结果如下所示:

这里写图片描述

阅读全文
0 0
原创粉丝点击