C言語 エラー番号の取得 エラー内容の取得 - errno.h - [ errno, strerror ]

2008.08.22 Friday | by LRESULT


errno.h(エラー番号)には、

グローバル変数のように使用できるerrnoマクロが宣言されています。
エラーが起こった場合はerrnoの値が、『0以外の値に設定』されます。
また、環境によってエラー番号は異なります。

[例]
ファイルを開く際のエラー番号を確認します。
error.aaa』という、あるはずのないファイルを開こうとして
エラー番号を取得します。

#include <stdio.h>
#include <errno.h>

void main(void)
{
  FILE *fp = fopen( "error.aaa", "r" );
  if( fp == NULL ){
    printf( "%d¥n", errno );
  }
  else{
    fclose( fp );
  }
}

ここで取得したエラー番号は『2』でした。





サンプルコード
今回は、既にエラーの内容が分かっていますが、
普通は分かりません。
更に、エラー番号が『2』と言われても‥。と、なると思います。

そこで、string.h にある、
char *strerror( int err ) 関数を組み合わせて使用します。
strerror()の引数err に、さきほどのerrno を入れると、
エラーの内容を取得できます。
#include <stdio.h>
#include <errno.h>
#include <string.h>

int main(void)
{
  FILE *fp = fopen( "error.aaa", "r" );
  if( fp == NULL ){
    printf( "%s¥n", strerror( errno ) );
  }
  else{
    fclose( fp );
  }

  return 0;
}



結果
No such file or firectory
と表示されました。

なんとなく、エラー内容がわかりますね。

カテゴリ:C言語 errno.h | 23:17 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/17

トラックバック