]>
<< スーパーエッシャー展 | main | 1.21 スペースをTABで置き換える >>
K&Rに載ってる問題をPythonでやってみようと思う。PyJUGでやっているのがソフトウェア作法だったのでインスパイヤしました。復習もかねて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を押せと書いてあった。これは仕様なんだろうか。
TABSIZE = 5
s = raw_input()
s = string.replace('\t', ' ' * TABSIZE)
print s
raw_inputを使っているので一行の入力しか受け取れないが、改行が含まれててもreplaceでいけるはず。
http://www.panopticon.jp/mt/mt-tb.cgi/20
コメントする