Hatena::Groupgeneration1986

仮想化済み古代魚

 | 

2008-05-17

K&R 演習1-20

21:46

#include <stdio.h>
#define MAXLINE 1000
#define SPACE 3

void detab(char s[], int n);
int getline(char s[]);

int main(void)
{
	char line[MAXLINE];
	while(getline(line) > 0){
		detab(line, SPACE);
		printf("処理後\n%s", line);
	}
	return 0;
}

void detab(char s[], int n){

	int i, m;
	for (i = 0; s[i] != '\0'; ++i){
		if (s[i] == '\t'){
			s[i] = 'x';
			m = i;
			for (; s[m] != '\0'; ++m)
				;
			for (; m > i; --m){
				s[m+SPACE-1] = s[m];
			}
			for (m = 0; m < SPACE; m++){
				s[i+m] = 'x';
			}
		}
	}
}


int getline(char s[])
{
	int i;
	for (i = 0;i < MAXLINE && (s[i] = getchar()) != '\n' && s[i] != EOF; ++i)
		;
	if (s[i] == '\n')
		i++;
	s[i] = '\0';
	return i;
}

例によって縦に長い。文字配列の操作って面倒ですね。

あと、Flashが気になってるのでFlex SDKを落としてみました。あんまり重く無いと良いんですが。

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