K&Rを読もう(29) 問題2-4 tr -dみたいな。
夏休みだったので実家でゴロゴロしてました。休みぼけモードのtanakaです。
問題 2-4
問題の意図が掴みづらかった。
「文字列s2中の任意の文字に等しい文字をs1から除去するような形のsqueeze(s1,s2)を書け」
どうやら、
% tr -d abc % sed 's/[abc]//g'
みたいな処理をせよ。ということらしい。
#include <stdio.h> #include <stdlib.h> static void squeeze(char *str, const char *pat); int main(void) { char s1[] = "adbecf"; squeeze(s1, "abc"); puts(s1); /* def */ return EXIT_SUCCESS; } static void squeeze(char *str, const char *pat) { char *b = str; const char *p; for (; *str != '\0'; str++) { for (p = pat; *str != *p && *p != '\0'; p++) ; if (*p == '\0') *b++ = *str; } *b = '\0'; }
tr -dは結構便利かも。