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

プロフィール 

Author:高木信尚

ホームページ
ブログ

最近の記事 

最近のコメント 

最近のトラックバック 

月別アーカイブ 

カテゴリー 

友達申請フォーム 

この人と友達になる

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

 

2008/08/28 09:11|

 

今回から<string.h>で宣言される関数についてお話していきます。まずは、後回しにしていると忘れてしまいそうな、strerror関数からです。strerror関数の使用頻度は必ずしも高くないので、これまで使ったことがない方もおられると思います。そこで、簡単にこの関数について解説しておきます。

strerror関数は、errno に設定するエラー番号を引数として渡すことで、そのエラー番号に応じた文字列を返す関数です。例えば、EDOMを渡せば、"Domain error"という文字列を返すわけです。具体的にどんな文字列を返すかは、処理系に依存します。

それでは実際の実装に入ります。

#include <errno.h>

char *strerror(int errnum)
{
  char *result;
  switch (errnum)
  {
  case 0:
    result = "No error";
    break;
  case EDOM:
    result = "Domain error";
    break;
  case ERANGE:
    result = "Range error";
    break;
  case EILSEQ:
    result = "Illegal sequence";
    break;
  default:
    result = "Unknown error";
    break;
  }
  return result;
}

今回の実装では、エラー番号は三種類しかないのでswitch文にしましたが、エラー番号が多い場合は表引きの方がよさそうです。また、文字列定数を(const修飾がない)char*で返しているところも、いまひとつ安全性に欠けますが、これは標準Cの仕様なので致し方ありません。

2006/02/15 23:01|文字列操作TB:0CM:0

コメント
コメントの投稿

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


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

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

ブログ内検索 

お勧め書籍 

RSSフィード 

リンク 

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

Powered By FC2ブログ 

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

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