]> Panopticon :: K&R in Python :: 1.20 TABをスペースで置換する

<< スーパーエッシャー展 | main | 1.21 スペースをTABで置き換える >>

1.20 TABをスペースで置換する

プログラミング言語C ANSI規格準拠

K&Rに載ってる問題をPythonでやってみようと思う。PyJUGでやっているのがソフトウェア作法だったのでインスパイヤしました。復習もかねてCでも書いてみる。

1.20 in C

#include <stdio.h>
#define BUF_SIZE 1024
#define TAB_SIZE 5

int main(void){
	char s[BUF_SIZE];
	int i, j, len;

	while (fgets(s, BUF_SIZE,stdin)){
		for (i=0;i < strlen(s);i++){
			if (s[i] == '\t'){
				for(j = 0;j < TAB_SIZE;j++){
					putchar(' ');
				}
			}else{
				putchar(s[i]);
			}
		}
	}
	return 0;
}

getstringはEOFまでの改行を含む文字列の入力を受け取り、その長さを返す。cygwinだと挙動がなんかおかしいぞ、と思って海外のサイトを見ると、EOFを入力するにはCtrl-Dを二回か空白行の頭でCtrl-Dを押せと書いてあった。これは仕様なんだろうか。

1.20 in Python

TABSIZE = 5
s = raw_input()
s = string.replace('\t', ' ' * TABSIZE)
print s

raw_inputを使っているので一行の入力しか受け取れないが、改行が含まれててもreplaceでいけるはず。

カテゴリ

Trackback URI

http://www.panopticon.jp/mt/mt-tb.cgi/20

Trackbacks(0)

コメントする