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

プロフィール 

Author:高木信尚

ホームページ
ブログ

最近の記事 

最近のコメント 

最近のトラックバック 

月別アーカイブ 

カテゴリー 

ブロとも申請フォーム 

この人とブロともになる

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

 

2008/10/07 11:48|

 

mblen関数は、多バイト文字を構成するバイト数を求めるための関数です。ただし、現在のところ、扱っているのが"C"ロケールだけですので、有効な多バイト文字のバイト数は常に1になります。

この関数の基本的な機能は単純なのですが、付随する機能がいろいろとあります。

まず、引数に空ポインタを渡した場合の動作ですが、多バイト文字がシフトシーケンスに依存する場合は非0を、そうでなければ0を返します。今回の実装では、シフトシーケンスに依存するエンコーディングは使用しませんので、この場合は0を返すことになります。

次に、先頭の1バイトが'\0'の場合にも0を返します。他には、サイズとして0を渡した場合にも0を返すことになります。それでは実装です。

#include <stddef.h>

int mblen(const char *s, size_t n)
{
  if (s == NULL || *s == '\0' || n == 0)
    return 0;
  return 1;
}

*sの値をもう少し詳しく見て、有効な文字かどうかを判別してもよいのでしょうが、とりあえずナル文字以外は何でもOKという仕様にしておきます。
2006/06/13 00:16|一般ユーティリティTB:0CM:0

コメント
コメントの投稿

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


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

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

ブログ内検索 

お勧め書籍 

RSSフィード 

リンク 

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

Powered By FC2ブログ 

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

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