当前位置: C语言 -- 标准库 -- <errno.h> -- EILSEQ

EILSEQ宏


概要:

#define EILSEQ value //value值由具体实现定义。


描述:

EILSEQillegal byte sequence)表示遇到了非法字节序列;该宏会扩展为一个int类型的正值常量表达式。

非法字节序列包括无效或者不完整的多字节字符、无效的宽字符。如果遇到非法字节序列,宏errno将被设置为EILSEQ


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
/*宏EILSEQ范例*/

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char buffer[20];
    size_t number;

    errno = 0;
    number = wcstombs(buffer,L"\xEEEE",sizeof(buffer));
    if(errno == EILSEQ)
        puts("Error:Illegal byte sequence.");

    if(number == (size_t)(-1))
        puts("The wide-character does not correspond to a valid multibyte character.");

    return 0;
}


输出:

Error:Illegal byte sequence.

The wide-character does not correspond to a valid multibyte character.

在这个例子中,L"\xEEEE"是一个非法序列,因此errno值设置为EILSEQwcstombs函数的返回值为(size_t)(-1),也说明宽字符L"\xEEEE"不存在对应的有效多字节字符。


相关内容:
EDOM 域错误。
ERANGE 范围错误。
errno 最近一次错误编号。