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 |
---|
と表示されました。 なんとなく、エラー内容がわかりますね。 |