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

プロフィール 

Author:高木信尚

ホームページ
ブログ

最近の記事 

最近のコメント 

最近のトラックバック 

月別アーカイブ 

カテゴリー 

ブロとも申請フォーム 

この人とブロともになる

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

 

2008/10/07 11:40|

 

strspn関数は、strcspn関数とよく似ていますが、条件が逆になります。すなわち、指定した文字群の文字だけで構成される先頭部分の長さを求めます。言い換えれば、指定した文字群に含まれない文字が最初に現れた位置の添え字を返します。

機能は似ているのですが、実現方法はstrcspn関数とは結構違います。実装を見てみましょう。

#include <stddef.h>

size_t strspn(const char *s1, const char *s2)
{
  register const char *ss1 = s1, *ss2;
  if (*s2 != '\0') {
    for (register int c; (c = *ss1) != '\0'; ss1++) {
      for (ss2 = s2; *ss2 != '\0'; ss2++)
        if (c == *ss2)
          break;
      if (*ss2 == '\0')
        break;
    }
  }
  return ss1 - s1;
}

strcspn関数では、s1文字列の各文字が、s2文字列のどれかと一致した時点で即ループを抜ければよかったのですが、strspn関数では、s2文字列のどの文字とも一致しないことを確認しなければなりません。そのため、やや条件判定が複雑になっています。
2006/05/03 12:06|文字列操作TB:0CM:0

コメント
コメントの投稿

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


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

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

ブログ内検索 

お勧め書籍 

RSSフィード 

リンク 

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

Powered By FC2ブログ 

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

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