文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C程序设计语言(第二版) 3-2

C程序设计语言(第二版) 3-2

时间:2010-07-15  来源:carolaif

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");
}

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载