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

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

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


EILSEQ

概要

マルチバイト文字、ワイド文字を変換する際のエラーを表すエラーコード。

ヘッダ

errno.h

形式

#define EILSEQ 42

置換結果

0以外の何らかの整数。

詳細

名前の意味は、「Error ILlegal SEQuence(不正なシーケンス)」。文字の変換の際、文字コードの並び(シーケンス)が不正であることを示す。たとえば、mbrtowc関数wcrtomb関数が、このエラーを発生させることがある。

注意

使用例

#if defined(_MSC_VER)
// Visual Studio において、
// 翻訳単位内の文字列リテラルを 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 として不正なコード

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

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

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

実行結果:

Illegal byte sequence

関連

標準には、他のエラーコードとして、EDOMERANGE が定義されている。

解説章


参考リンク


更新履歴

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

’2018/1/22 新規作成。



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

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

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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る