:: reverse dictionary ::
※ソースファイルについて
システムエラーのメッセージを取得するには、strerror 関数を使います。
#include <stdio.h> #include <stdlib.h> #include <string.h>
char *errmsg;
errmsg = strerror(34);
errmsg は "Result too large" になります。
char *strerror(int n)
エラー番号 n に対応するエラーメッセージへのポインタを返します。 エラーメッセージが画面に表示されることはありません。
通常はグローバル変数 errno を n に指定します。
FILE *fp; char *errmsg; fp = fopen("sample.txt", "r"); if (fp == NULL) { errmsg = strerror(errno); } else { fclose(fp); exit(EXIT_SUCCESS); }
sample.txt が存在しない場合、errmsg は "No such file or directory" になります。
エラー番号とエラーメッセージの対応は、コンパイラによって違います。 対応だけでなく、エラーメッセージが違う場合もあります。
よく採用されているエラーメッセージとその内容を挙げておきます。
| エラーメッセージ | エラー内容 |
|---|---|
| Arg list too long | 引数の個数が最大数を超えた |
| Bad address | 不正なアドレスにアクセスした |
| Broken pipe | 閉じたパイプを使用した |
| Exec format error | 実行形式が間違っている |
| File exists | ファイルがすでに存在する |
| File too large | ファイルが大きすぎて開けない |
| Filename too long | 指定したファイル名が最大長を超えた |
| Function not implemented | 実装されていない関数を呼び出した |
| Invalid argument | 無効な引数を指定した |
| Is a directory | ファイル操作にディレクトリを指定した |
| No child processes | 子プロセスがない |
| No space left on device | デバイス(ディスク)の容量が足りない |
| No such device | デバイスが見つからない |
| No such device or address | デバイスまたはアドレスが見つからない |
| No such file or directory | ファイルまたはディレクトリが見つからない |
| No such process | プロセスが見つからない |
| Not a directory | ディレクトリ操作にファイルを指定した |
| Not enough space | 実行時に必要なメモリが不足している |
| Operation not permitted | 操作する権限がない |
| Permission denied | 実行する権限がない |
| Read-only file system | 読み取り専用ファイルに書き込み処理をした |
| Result too large | 演算結果が変数の最大値または最小値を超えた |
n … エラー番号
エラーメッセージへのポインタ
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com