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

发布时间 2023-07-30 13:04:43作者: 语巫

Archlinux

GCC 13.1.1  20230429

2023-07-30 12:57:46 星期日

 


点击查看代码
#include<stdio.h>


void escape( char s[], char t[] )
{
    int i, j;

    i = j = 0;

    while( t[i] != '\0' )
    {
        switch( t[i] )
        {
            case '\t': s[j]='\\'; j++; s[j]='t'; break;
            case '\n': s[j]='\\'; j++; s[j]='n'; break;
            default :  s[j]=t[i]; 
        }
        i++;
        j++;
    }

    s[j] = '\0';
}

void unescape( char s[], char t[] )
{
    int x, y;

    x = y = 0;

    while( t[x] != '\0' )
    {
        if( t[x] == '\\' ){
            switch( t[++x] )
            {
                case 'n': s[y] = '\n'; break;
                case 't': s[y] = '\t'; break;
            }
        }
        else
        {
            s[y] = t[x];
        }

        x++;
        y++;
        s[y] = '\0';
    }
}

int main()
{
    char arr[]= "xdq\tzs\n";
    char tmp[100];
    
    escape( tmp, arr );

    printf("%s\n", tmp);

    unescape( arr, tmp );

    printf("%s\n", arr );


    return 0;
}


 


运行截图:

image

输出正确。

 


小白刚学习C语言,代码质量不高,欢迎评论。