K&Rを読もう(13) 演習 1-20 tabをスペースに変換。

演習 1-20

tabをスペースに変換する問題。

タブをスペースに変換しても見えないので>----とVimっぽくしてみる。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int c;
	while ((c = getchar()) != EOF) {
		if (c == '\t')
			printf(">-------");
		else
			putchar(c);
	}
	exit(EXIT_SUCCESS);
}

うぅん。ステキ。

実行結果

% ./ex-1-20 < ex-1-20.c
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
>-------int c;
>-------while ((c = getchar()) != EOF) {
>------->-------if (c == '\t')
>------->------->-------printf(">-------");
>------->-------else
>------->------->-------putchar(c);
>-------}
>-------exit(EXIT_SUCCESS);
}

うっはVimっぺぇ!!

色つき

これだけじゃ面白くないので、tabに色を付けたいと思います。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int c;
	while ((c = getchar()) != EOF) {
		if (c == '\t')
			printf("\033[1;30m>-------\033[0m");
		else
			putchar(c);
	}
	exit(EXIT_SUCCESS);
}

グレーで色が付きます。うっはVimっぺぇ!!

参考

エディタ作りたくなりますねぇ。

ついでにメモ

FreeBSDのlsではtermcapが使われていた。

端末制御も深い。