やっと練習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; }