サーチ…


構文

  • #include <errno.h>
  • int errno; / *実装定義* /
  • #include <string.h>
  • char * strerror(int errnum);
  • #include <stdio.h>
  • void perror(const char * s);

備考

ことを心に持っているerrno必ずしも変数ではなく、構文は、それが宣言された可能性があるかを示すだけであること。スレッドインタフェースを持つ現代の多くのシステムでは、 errnoは現在のスレッドに対してローカルなオブジェクトに解決するマクロです。

エラー

標準ライブラリ関数が失敗すると、errnoに適切なエラーコードが設定されることがよくあります。 C標準では、errnoを設定するために少なくとも3つの値が必要です。

意味
EDOM ドメインエラー
ERANGE レンジエラー
EILSEQ 不正なマルチバイト文字シーケンス

strerror

perror柔軟性が十分でない場合、 <string.h>からstrerrorを呼び出すことによって、ユーザーが読めるエラー記述を得ることができます。

int main(int argc, char *argv[])
{
    FILE *fout;
    int last_error = 0;

    if ((fout = fopen(argv[1], "w")) == NULL) {
        last_error = errno;
         /* reset errno and continue */
         errno = 0;
    }

    /* do some processing and try opening the file differently, then */


    if (last_error) {
        fprintf(stderr, "fopen: Could not open %s for writing: %s", 
                argv[1], strerror(last_error));
        fputs("Cross fingers and continue", stderr);
    }

    /* do some other processing */

    return EXIT_SUCCESS;
}

恐怖

ユーザーが読めるエラーメッセージをstderrには、<stdio.h>からperrorを呼び出します。

int main(int argc, char *argv[])
{
   FILE *fout;

   if ((fout = fopen(argv[1], "w")) == NULL) {
      perror("fopen: Could not open file for writing");
      return EXIT_FAILURE;
   }
return EXIT_SUCCESS;
}

これにより、 errno現在の値に関するエラーメッセージが出力されerrno



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow