EILSEQ | Programming Place Plus C言語編 標準ライブラリのリファレンス

C言語編 標準ライブラリのリファレンス EILSEQ

先頭へ戻る

EILSEQ

概要 マルチバイト文字、ワイド文字を変換する際のエラーを表すエラーコード。
ヘッダ errno.h
形式 #define EILSEQ 42
置換結果 0以外の何らかの整数。
詳細 名前の意味は、「Error ILlegal SEQuence(不正なシーケンス)」。文字の変換の際、文字コードの並び(シーケンス)が不正であることを示す。例えば、mbrtowc関数wcrtomb関数が、このエラーを発生させることがある。
注意
使用例
#if defined(_MSC_VER)
// VisualStudio において、
// 翻訳単位内の文字列リテラルを UTF-8 として扱うようにする指示。
#pragma execution_character_set("utf-8")
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <locale.h>
#include <wchar.h>

int main(void)
{
    const char mbs[] = "\xa0\xa0";  // UTF-8 として不正なコード
    wchar_t ws;
    mbstate_t state;
    size_t result;

    memset( &state, 0, sizeof(state) );

    #if defined(_MSC_VER)
    setlocale( LC_ALL, "ja-JP" );
    #elif defined(__clang__)
    setlocale( LC_ALL, "ja_JP" );
    #endif

    errno = 0;
    result = mbrtowc( &ws, mbs, MB_CUR_MAX, &state );
    if( (int)result < 0 ){
        if( errno != 0 ){  // EILSEQ の可能性がある
            perror( "" );
        }
        exit( EXIT_FAILURE );
    }

    return 0;
}

実行結果:

Illegal byte sequence
関連 標準には、他のエラーコードとして、EDOMERANGE が定義されている。
解説章


参考リンク



更新履歴

'2018/4/2 「VisualC++」という表現を「VisualStudio」に統一。

'2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS