c语言escape,rescape

k&r习题3-2,escape(s,t)将\n,\t转换成可见转义序列,rescape功能反之。

自己写了一下:

#include<stdio.h>
#define MAXLEN 1024
void escape(char s[], char t[])
{
    int i=0;
    int j=0;
    while(t[i]!=‘\0‘){
        switch(t[i]){
            case ‘\n‘:
                s[j++]=‘\\‘;
                s[j]=‘n‘;
                break;
            case ‘\t‘:
                s[j++]=‘\\‘;
                s[j]=‘t‘;
                break;
            default:
                s[j]=t[i];
                break;
        }
        ++j;
        ++i;
    }
    s[j]=‘\0‘;
}

void rescape(char s[], char t[])
{
    int i=0;
    int j=0;
    while(t[i]!=‘\0‘){
        if(t[i]==‘\\‘){
            ++i;
            switch(t[i]){
                case ‘t‘:
                    s[j]=‘\t‘;
                    break;
                case ‘n‘:
                    s[j]=‘\n‘;
                    break;
                case ‘\\‘:
                    s[j]=‘\\‘;
                    break;
                default:
                    s[j]=t[i];
                    break;
            }
        }else{
            s[j]=t[i];
        }
        ++i;
        ++j;
    }
    s[j]=‘\0‘;
}
int main()
{
    int i=0;
    char a[MAXLEN];
    char b[]="he	sdf     k	sdf\n,jj\t\tllw";
    escape(a,b);
    while(a[i]!=‘\0‘)
        putchar(a[i++]);
    putchar(‘\n‘);
   
    rescape(a,b);
    while(a[i]!=‘\0‘)
        putchar(a[i++];
    putchar(‘\n‘);
    return 0;
}

对比了一下,不如那本解答上的简洁

时间: 2024-10-09 19:56:02

c语言escape,rescape的相关文章

Oracle 语言基础

1,基本 select 语句 select  *|{[distinct] column|expression [alias],...} from  table; distinct 删除重复行 2,过滤和排序 where 子句紧随 from子句 字符和日期要包含单引号中 默认日期格式是DD-MON-RR; 比较运算 = ,>, >=, <, <=,<>不等于也可以是(!=)   还有between and  ,in(set)  ,like(%代表零个或者多个字符,_代表一

R语言基因组数据分析可能会用到的data.table函数整理

R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理的步骤进行了程序上的优化,使用多线程,甚至很多函数是使用C写的,大大加快数据运行速度.因此,在对大数据处理上,使用data.table无疑具有极高的效率.这里主要介绍在基因组数据分析中可能会用到的函数. fread 做基因组数据分析时,常常需要读入处理大文件,这个时候我们就可以舍弃read.ta

Swift 语言的设计错误有哪些?

其实 Swift 1.0 刚出来的时候,我就发现它的 array 可变性设计存在严重的错误.Swift 2.0 修正了这个问题,然而他们的修正方法却没有击中要害,所以导致了其它的问题.这个错误一直延续到今天. Swift 1.0 试图利用 var 和 let 的区别来指定 array 成员的可变性,然而其实 var 和 let 只能指定 array reference 的可变性,而不能指定 array 成员的可变性.举个例子,Swift 1.0 试图实现这样的语义: var shoppingLi

[Python学习笔记1]Python语言基础 数学运算符 字符串 列表

这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档:http://docs.python.org/.在此向文档编辑者致谢.请勿将本文用于商业用途. 一.Python语言介绍 首先,Python是一种广泛应用的通用高级编程语言,具有较高的抽象层次,支持面向对象的编程方法.其具有高级的数据结构和许多方便的库文件,可以完成文件IO.系统调用.网络编程,甚至

[Java面试九]脚本语言知识总结.

核心内容概述 1.JavaScript加强,涉及到ECMAScript语法.BOM对象.DOM对象以及事件. 2.Ajax传统编程. 3.jQuery框架,九种选择器为核心学习内容 4.JQuery UI插件 5.jQuery Ajax编程 6.jQuery第三方插件 7.反向Ajax编程(彗星) 一.JavaScript基础加强 JavaScript是在浏览器内容运行,无需编译.解释执行动态脚本语言,是一种弱类型语言,所有变量使用var定义. JavaScript的3个组成部分分别为:核心(E

asp.net使用unescape读取js escape编码过的字符串

escape() 是JavaScript的编码函数 例子:var esstring=escape("helloworld"); 为了防止数据传输读取中出现乱码现象,字符串往往要用JS的escape()函数把字符串编码,然后在用unescape()函数解码,当然,这个在网页前台的JS操作中没有什么困难的.但是对于用JS的escape()编码过的字符串,在用后台语言处理中,怎样读出来呢?asp.net可没有unescape()这个函数可以直接解码.不过可喜的是,asp.net可以添加其他的

RFC3986编码 C 语言实现(支持大部分中文)

前些时间做 xauth 认证程序的编写,网上找到RFC3986编码不支持中文的编码,所以便查找了一些资料.自己写了一个,代码如下. #include <stdlib.h> #include <string.h> #include <stdio.h> #include <android/log.h> #include "RFC3986Encoder.h" bool isReverseChar(char c); char* charToHex

几种语言的CGI编程

为了了解PHP.JSP.ASP出现之前人们写网站的方法,洒家研究了一波CGI,使用C.Python.batch.shell script语言写了几个简单的网页. CGI即通用网关接口,指web服务器调用编程语言编写的程序的一个接口.洒家用的是Apache的CGI,QUERY_STRING.REMOTE_ADDR.REQUEST_URI等参数是通过环境变量传递给CGI程序的,请求主体(POST数据)作为CGI程序的标准输入(stdin),而CGI程序的标准输出(stdout)作为HTTP响应的部分

数据库语言SQL语法实例速查(一)

数据库系统以一些语句作为输入,并返回一些输出,例如sql查询总是返回一张表,我们定义:具有相同格式的记录的集合是一张表. 考虑大学数据库系统: SQL中的数据类型: char(n) 字符串长度为n  等价于 character varchar(n) 可变字符串 最大长度n,等价于 character varing, 推荐都使用这种类型 int 整数 等价于 integer smallint 小整数 numeric(p,d) 定点数,加上符号为共有p位数,其中d位数字在小数点右边,d表示精度 re