Hatena::Groupgeneration1986

仮想化済み古代魚

2008-09-18K&R演習3-2

switch構文を使ってタブや改行を\t、\nという風に書き換える関数escapeを書け、だそうです。

unescapeはその逆をやる関数。

void escape(char s[], char t[])
{
	int	i, j;	//jはt[]のカウント用
	char	c;
	
	for (i=j=0; (c=s[i]) != '\0'; ++i, ++j)
	{
		t[j] = '\\';
		switch (c) {
			case '\n':		//改行なら
				t[++j] = 'n';
				break;
			case '\t':		//タブなら
				t[++j] = 't';
				break;
			default:
				t[j] = c;
				break;
		}
	}
	t[j] = '\0';
}

unescape

void unescape(char s[], char t[])
{
	int	i, j;	//jはt[]のカウント用
	char	c;
	
	for (i=j=0; (c=s[i]) != '\0'; ++i, ++j)
	{
		if (c == '\\')
			switch (s[i+1]) {
				case 'n':		//改行なら
					t[++j] = '\n';
					break;
				case 't':		//タブなら
					t[++j] = '\t';
					break;
				default:
					t[j] = c;
					break;
			}
	}
	t[j] = '\0';
}

ゲスト



トラックバック - http://generation1986.g.hatena.ne.jp/oldfish/20080918