练习3.2

来源:互联网 发布:2016淘宝双十一成交额 编辑:程序博客网 时间:2024/04/28 13:42

编一个函数escape(s,t),将字符串t复制到s中,并在复制过程中将换行符、制表符转换成\n\t可见字符。

再编写一个具有相反功能的函数。

 

代码:

#include <stdio.h>#include <stdlib.h>void escape(char *s, const char *t);void rescape(char *s, const char *t);int main(int argc, char *argv[]){    char s[30] = "";    char t[20] = "hello world\\t!\\n";    escape(s, t);    rescape(s, t);    printf("%s", s);    return 0;}void escape(char *s, const char *t){    size_t j = 0;    for (size_t i = 0; t[i] != '\0'; ++i) {        switch (t[i]) {            case '\t':                {                    s[j++] = '\\';                    s[j++] = 't';                    break;                }            case '\n':                {                    s[j++] = '\\';                    s[j++] = 'n';                    break;                }            case ' ':                {                    s[j++] = '#';                    break;                }            default:                s[j++] = t[i];        }    }    s[j++] = '\0';}void rescape(char *s, const char *t){    size_t j = 0;    for (size_t i = 0; t[i] != '\0'; ++i) {        switch (t[i]) {            case '\\':                {                    if (t[i+1] == 't') {                        ++i;                        s[j++] = '\t';                    } else if (t[i+1] == 'n') {                        ++i;                        s[j++] = '\n';                    } else {                        s[j++] = '\\';                    }                }                break;            default:                {                    s[j++] = t[i];                }        }    }    s[j++] = '\0';}



 

原创粉丝点击