Поделиться через


Процедуры is, isw

isalnum, iswalnum, _isalnum_l, _iswalnum_l

isgraph, iswgraph, _isgraph_l, _iswgraph_l

isalpha, iswalpha, _isalpha_l, _iswalpha_l

isleadbyte, _isleadbyte_l

__isascii, iswascii

islower, iswlower, _islower_l, _iswlower_l

isblank, iswblank, _isblank_l, _iswblank_l

isprint, iswprint, _isprint_l, _iswprint_l

iscntrl, iswcntrl, _iscntrl_l, _iswcntrl_l

ispunct, iswpunct, _ispunct_l, _iswpunct_l

__iscsym, __iswcsym, __iscsymf, __iswcsymf, _iscsym_l, _iswcsym_l, _iscsymf_l, _iswcsymf_l

isspace, iswspace, _isspace_l, _iswspace_l

_isctype, iswctype, _isctype_l, _iswctype_l

isupper, _isupper_l, iswupper, _iswupper_l

isdigit, iswdigit, _isdigit_l, _iswdigit_l

isxdigit, iswxdigit, _isxdigit_l, _iswxdigit_l

Заметки

Эта процедура проверяет символы на соответствие заданным условиям.

Процедуры is выдают значащий результат для любого целочисленного аргумента от –1 (EOF) до UCHAR_MAX (0xFF) включительно. Ожидается тип аргумента int.

Предупреждение

Для is процедур передача аргумента типа char может привести к непредсказуемым результатам.Однобайтовый знак типа char со значением, превышающем 0x7F, в однобайтовой или многобайтовой кодировке является отрицательным.Если передается значение типа char, компилятор может преобразовать это значение в значение типа int со знаком или long со знаком.Данное значение может быть расширено знаком компилятором, что приведет к непредвиденным результатам.

Процедуры isw выдают значащие результаты для любого целого числа от –1 (WEOF) до 0xFFFF включительно. Тип данных wint_t определяется в WCHAR.H как unsigned short; он может содержать любое значение расширенного символа или расширенного символа конца файла (WEOF).

Выходное значение зависит от настройки категории LC_CTYPE языкового стандарта; дополнительные сведения см. в разделе setlocale. Версии этих функций без суффикса _l используют текущий языковой стандарт для данной функциональности, зависящей от языкового стандарта; версии с суффиксом _l идентичны, за исключением того, что они используют переданный параметр языкового стандарта.

В языковом стандарте «C» следующие условия теста для процедуры is:

  • isalnum
    Алфавитно-цифровые символы (a-z, a-z или от 0 до 9).

  • isalpha
    Алфавитные (a-z или a-z).

  • __isascii
    Символы ASCII (0x00 — 0x7F).

  • isblank
    Горизонтальная табуляция или пробел (0x09 или 0x20).

  • iscntrl
    Управляющий символ (0x1F или 0x00 — 0x7F).

  • __iscsym
    Буква, символ подчеркивания или цифра.

  • __iscsymf
    Буква или символ подчеркивания.

  • isdigit
    Десятичная цифра (0 – 9).

  • isgraph
    Печатные символы, кроме пробела ( ).

  • islower
    Буквы нижнего регистра (a – z).

  • isprint
    Печатные символы, включая пробел (0x20 — 0x7E).

  • ispunct
    Знак препинания.

  • isspace
    Знак пробела (0x09 — 0x0D или 0x20).

  • isupper
    Буквы верхнего регистра (A – Z).

  • isxdigit
    Шестнадцатеричная цифра (А — F, a — f или 0 — 9).

Для процедуры isw, результаты теста для заданного условия не зависят от языкового стандарта. Условия теста для функций isw следующие:

  • iswalnum
    iswalpha или iswdigit.

  • iswalpha
    Любой расширенный символ из набора, определенного реализацией, для которого ни одно из iswcntrl, iswdigit, iswpunct или iswspace отлично от нуля. iswalpha возвращает ненулевое значение только для расширенных символов, для которых iswupper или iswlower ненулевые.

  • iswascii
    Представление символа ASCII (0x0000 — 0x007F) в расширенных символах.

  • iswblank
    Расширенный символ, соответствующий стандартному пробелу или являющийся одним из определенных реализацией символов, для которых iswalnum ложно. Стандартные пустые символы представляют собой пробел (L' ') и символ горизонтальной табуляции (L'\t').

  • iswcntrl
    Расширенный символ управления.

  • __iswcsym
    Любой расширенный символ, для которого isalnum имеет значение true, или символ '_'.

  • __iswcsymf
    Любой расширенный символ, для которого iswalpha имеет значение true, или символ '_'.

  • iswctype
    Символ содержит значение свойства, указанного аргументом desc. Для каждого допустимого значения аргумента desc iswctype, существует эквивалентная функция, работающая с расширенными символами, как показано в следующей таблице:

    Эквивалентность iswctype ( c, desc ) другим процедурам тестирования isw

    Значение аргумента desc

    эквивалент iswctype( c, desc )

    _ALPHA

    iswalpha( c )

    _ALPHA | _DIGIT

    iswalnum( c )

    _BLANK

    iswblank( c )

    _CONTROL

    iswcntrl( c )

    _DIGIT

    iswdigit( c )

    _ALPHA | _DIGIT | _PUNCT

    iswgraph( c )

    _LOWER

    iswlower( c )

    _ALPHA | _BLANK | _DIGIT | _PUNCT

    iswprint( c )

    _PUNCT

    iswpunct( c )

    _BLANK

    iswblank( c )

    _SPACE

    iswspace( c )

    _UPPER

    iswupper( c )

    _HEX

    iswxdigit( c )

  • iswdigit
    Расширенный символ, соответствующий символу десятичной цифры

  • iswgraph
    Печатные расширенные символы, кроме расширенного символа пробела (L' ').

  • iswlower
    Строчная буква или член определенного реализацией набора расширенных символов, для которых ни одно из iswcntrl, iswdigit, iswpunct или iswspace отлично от нуля. iswlower возвращает ненулевое значение только для расширенных символов, которые соответствуют буквам нижнего регистра.

  • iswprint
    Печатные расширенные символы, включая расширенный символа пробела (L' ').

  • iswpunct
    Печатные расширенные символы, которые не являются ни расширенным символом пробела (L' '), ни расширенным символом, для которого iswalnum отлично от нуля.

  • iswspace
    Расширенный символ, соответствующий стандартному пробелу или являющийся одним из определенных реализацией символов, для которых iswalnum ложно. Стандартные пробельные символы: пробел (L' '), символ конца страницы (L'\f'), символ новой строки (L'\n'), символ возврата каретки (L'\r'), символ горизонтальной табуляции (L'\t'), символ вертикальной табуляции (L'\v').

  • iswupper
    Расширенный символ верхнего регистра или один из набора определенных реализацией расширенных символов, для которых ни одно из iswcntrl, iswdigit, iswpunct или iswspace не равно нулю. iswupper возвращает ненулевое значение только для расширенных символов, которые соответствуют буквам верхнего регистра.

  • iswxdigit
    Расширенный символ, который соответствует символу шестнадцатеричной цифры.

Пример

// crt_isfam.c
/* This program tests all characters between 0x0
 * and 0x7F, then displays each character with abbreviations
 * for the character-type codes that apply.
 */

#include <stdio.h>
#include <ctype.h>

int main( void )
{
   int ch;
   for( ch = 0; ch <= 0x7F; ch++ )
   {
      printf( "%.2x  ", ch );
      printf( " %c", isprint( ch )  ? ch   : ' ' );
      printf( "%4s", isalnum( ch )  ? "AN" : "" );
      printf( "%3s", isalpha( ch )  ? "A"  : "" );
      printf( "%3s", __isascii( ch )  ? "AS" : "" );
      printf( "%3s", iscntrl( ch )  ? "C"  : "" );
      printf( "%3s", __iscsym( ch )  ? "CS "  : "" );
      printf( "%3s", __iscsymf( ch )  ? "CSF"  : "" );
      printf( "%3s", isdigit( ch )  ? "D"  : "" );
      printf( "%3s", isgraph( ch )  ? "G"  : "" );
      printf( "%3s", islower( ch )  ? "L"  : "" );
      printf( "%3s", ispunct( ch )  ? "PU" : "" );
      printf( "%3s", isspace( ch )  ? "S"  : "" );
      printf( "%3s", isprint( ch )  ? "PR" : "" );
      printf( "%3s", isupper( ch )  ? "U"  : "" );
      printf( "%3s", isxdigit( ch ) ? "X"  : "" );
      printf( ".\n" );
   }
}

Output

00            AS  C                              .
01            AS  C                              .
02            AS  C                              .
03            AS  C                              .
04            AS  C                              .
05            AS  C                              .
06            AS  C                              .
07            AS  C                              .
08            AS  C                              .
09            AS  C                    S         .
0a            AS  C                    S         .
0b            AS  C                    S         .
0c            AS  C                    S         .
0d            AS  C                    S         .
0e            AS  C                              .
0f            AS  C                              .
10            AS  C                              .
11            AS  C                              .
12            AS  C                              .
13            AS  C                              .
14            AS  C                              .
15            AS  C                              .
16            AS  C                              .
17            AS  C                              .
18            AS  C                              .
19            AS  C                              .
1a            AS  C                              .
1b            AS  C                              .
1c            AS  C                              .
1d            AS  C                              .
1e            AS  C                              .
1f            AS  C                              .
20            AS                       S PR      .
21   !        AS              G    PU    PR      .
22   "        AS              G    PU    PR      .
23   #        AS              G    PU    PR      .
24   $        AS              G    PU    PR      .
25   %        AS              G    PU    PR      .
26   &        AS              G    PU    PR      .
27   '        AS              G    PU    PR      .
28   (        AS              G    PU    PR      .
29   )        AS              G    PU    PR      .
2a   *        AS              G    PU    PR      .
2b   +        AS              G    PU    PR      .
2c   ,        AS              G    PU    PR      .
2d   -        AS              G    PU    PR      .
2e   .        AS              G    PU    PR      .
2f   /        AS              G    PU    PR      .
30   0  AN    AS   CS      D  G          PR     X.
31   1  AN    AS   CS      D  G          PR     X.
32   2  AN    AS   CS      D  G          PR     X.
33   3  AN    AS   CS      D  G          PR     X.
34   4  AN    AS   CS      D  G          PR     X.
35   5  AN    AS   CS      D  G          PR     X.
36   6  AN    AS   CS      D  G          PR     X.
37   7  AN    AS   CS      D  G          PR     X.
38   8  AN    AS   CS      D  G          PR     X.
39   9  AN    AS   CS      D  G          PR     X.
3a   :        AS              G    PU    PR      .
3b   ;        AS              G    PU    PR      .
3c   <        AS              G    PU    PR      .
3d   =        AS              G    PU    PR      .
3e   >        AS              G    PU    PR      .
3f   ?        AS              G    PU    PR      .
40   @        AS              G    PU    PR      .
41   A  AN  A AS   CS CSF     G          PR  U  X.
42   B  AN  A AS   CS CSF     G          PR  U  X.
43   C  AN  A AS   CS CSF     G          PR  U  X.
44   D  AN  A AS   CS CSF     G          PR  U  X.
45   E  AN  A AS   CS CSF     G          PR  U  X.
46   F  AN  A AS   CS CSF     G          PR  U  X.
47   G  AN  A AS   CS CSF     G          PR  U   .
48   H  AN  A AS   CS CSF     G          PR  U   .
49   I  AN  A AS   CS CSF     G          PR  U   .
4a   J  AN  A AS   CS CSF     G          PR  U   .
4b   K  AN  A AS   CS CSF     G          PR  U   .
4c   L  AN  A AS   CS CSF     G          PR  U   .
4d   M  AN  A AS   CS CSF     G          PR  U   .
4e   N  AN  A AS   CS CSF     G          PR  U   .
4f   O  AN  A AS   CS CSF     G          PR  U   .
50   P  AN  A AS   CS CSF     G          PR  U   .
51   Q  AN  A AS   CS CSF     G          PR  U   .
52   R  AN  A AS   CS CSF     G          PR  U   .
53   S  AN  A AS   CS CSF     G          PR  U   .
54   T  AN  A AS   CS CSF     G          PR  U   .
55   U  AN  A AS   CS CSF     G          PR  U   .
56   V  AN  A AS   CS CSF     G          PR  U   .
57   W  AN  A AS   CS CSF     G          PR  U   .
58   X  AN  A AS   CS CSF     G          PR  U   .
59   Y  AN  A AS   CS CSF     G          PR  U   .
5a   Z  AN  A AS   CS CSF     G          PR  U   .
5b   [        AS              G    PU    PR      .
5c   \        AS              G    PU    PR      .
5d   ]        AS              G    PU    PR      .
5e   ^        AS              G    PU    PR      .
5f   _        AS   CS CSF     G    PU    PR      .
60   `        AS              G    PU    PR      .
61   a  AN  A AS   CS CSF     G  L       PR     X.
62   b  AN  A AS   CS CSF     G  L       PR     X.
63   c  AN  A AS   CS CSF     G  L       PR     X.
64   d  AN  A AS   CS CSF     G  L       PR     X.
65   e  AN  A AS   CS CSF     G  L       PR     X.
66   f  AN  A AS   CS CSF     G  L       PR     X.
67   g  AN  A AS   CS CSF     G  L       PR      .
68   h  AN  A AS   CS CSF     G  L       PR      .
69   i  AN  A AS   CS CSF     G  L       PR      .
6a   j  AN  A AS   CS CSF     G  L       PR      .
6b   k  AN  A AS   CS CSF     G  L       PR      .
6c   l  AN  A AS   CS CSF     G  L       PR      .
6d   m  AN  A AS   CS CSF     G  L       PR      .
6e   n  AN  A AS   CS CSF     G  L       PR      .
6f   o  AN  A AS   CS CSF     G  L       PR      .
70   p  AN  A AS   CS CSF     G  L       PR      .
71   q  AN  A AS   CS CSF     G  L       PR      .
72   r  AN  A AS   CS CSF     G  L       PR      .
73   s  AN  A AS   CS CSF     G  L       PR      .
74   t  AN  A AS   CS CSF     G  L       PR      .
75   u  AN  A AS   CS CSF     G  L       PR      .
76   v  AN  A AS   CS CSF     G  L       PR      .
77   w  AN  A AS   CS CSF     G  L       PR      .
78   x  AN  A AS   CS CSF     G  L       PR      .
79   y  AN  A AS   CS CSF     G  L       PR      .
7a   z  AN  A AS   CS CSF     G  L       PR      .
7b   {        AS              G    PU    PR      .
7c   |        AS              G    PU    PR      .
7d   }        AS              G    PU    PR      .
7e   ~        AS              G    PU    PR      .
7f            AS  C                              .

См. также

Ссылки

Классификация символов

Языковой стандарт

setlocale, _wsetlocale

Интерпретация последовательностей в многобайтной кодировке

Функции to