C99に対応した標準Cライブラリの実装レポートを行っていきます。

プロフィール 

Author:高木信尚

ホームページ
ブログ

最近の記事 

最近のコメント 

最近のトラックバック 

月別アーカイブ 

カテゴリー 

ブロとも申請フォーム 

この人とブロともになる

ホーム 全記事一覧 << 前の記事 次の記事 >>

 

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:0CM:0

コメント
コメントの投稿

管理者にだけ表示を許可する


トラックバック
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/45-e6ab9562

ホーム 全記事一覧 << 前の記事 次の記事 >>

ブログ内検索 

お勧め書籍 

RSSフィード 

リンク 

このブログをリンクに追加する

Powered By FC2ブログ 

Powered By FC2ブログ
ブログやるならFC2ブログ

Copyright(C) 2006 TAKAGI Nobuhisa All rights reserved.
Powered by FC2ブログ. 無料ホームページ アフィリエイト レンタルサーバー FC2ブログ 一戸建て template designed by 遥かなるわらしべ長者への挑戦.