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