c言語escape,rescape
1679 ワード
k&r練習問題3-2,escape(s,t)は,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 '
':
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]='
';
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
,jj\t\tllw";
escape(a,b);
while(a[i]!='\0')
putchar(a[i++]);
putchar('
');
rescape(a,b);
while(a[i]!='\0')
putchar(a[i++];
putchar('
');
return 0;
}
比較してみると,その解答の簡潔さに及ばない.