やっと練習2−4が終わったよ

朝まで眠れないのでK&Rの練習問題をやってみる。寝ているときにP58のを利用したら簡単になるかなと考えていて、寝付けないのでいちおうハックしてみた。やっぱり文字列って甘くみてかかったらダメだな、って実感したのもやっぱり文字列は難しいからだ。文字列は初心者が取りかかるにはやりやすいけれども、やっぱりきちんとした答えが出せないのはダメである。

#include <stdio.h>

/* K&R p58*/
void squeeze_char(char s[], int c)
{
	int i, j;
	for (i = j = 0; s[i] != '\0'; i++) {
		if (s[i] != c) {
			s[j++] = s[i];
		}
	}
	s[j] = '\0';
	
	return;
}

/*
	文字列s2中の任意の文字に等しい文字を
	s1から除去するような形のsqueeze(s1, s2)
	(K&R P58を利用)
*/
void squeeze(char *s1, char *s2)
{
	int i, j;
	int s1_length = strlen(s1);
	int s2_length = strlen(s2);
	
	for (i = 0; i < s1_length; i++) {
		for (j = 0; j < s2_length; j++) {
			squeeze_char(s1, s2[j]);
		}
	}
	
	return;
}