|
|
|
| 2008/10/07 11:44||▲
|
|
|
<string.h>ヘッダで宣言されている探索系の関数は、似通ったものも少なくないのですが、このstrpbrk関数も、そんな探索系の関数のひとつです。
前回のstrstr関数と同様、どうすれば最も効率がよくなるのか、いまいちよくわからないのですが、とりあえず今回は深く考えずに素直に作ってみました。
#include <stddef.h>
char *strpbrk(const char *s1, const char *s2) { if (*s2 != '\0') { for (register int c; (c = *s1) != '\0'; s1++) for (register const char *ss = s2; *ss != '\0'; ss++) if (c == *ss) return (char*)s1; } return NULL; }
ほとんど何の捻りもありません。
探索系の関数は、他にstrcspn関数とstrspn関数がありますが、慣れないと、どれがどんな機能だったか非常に紛らわしいですね。
strpbrk関数も、C++ではchar*版とconst char*版の2種類が多重定義されています。いつものパターンですので、コードは割愛します。
|
| 2006/04/30 19:59|文字列操作|TB:0|CM:0|▲
|
|
|
コメント
|
|
コメントの投稿
|
|
|
|
|
トラックバック
|
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/45-e6ab9562
|
|
|
|
|
ホーム
全記事一覧
<< 前の記事
次の記事 >>
|