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


is, isw подпрограммы

Замечания

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

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

Внимание

is Для подпрограмм передача аргумента типа char может привести к непредсказуемым результатам. Однобайтовый символ типа char со значением, превышающем 0x7F, в однобайтовой или многобайтовой кодировке является отрицательным. char Если передается, компилятор может преобразовать значение в значение signed int или значениеsigned 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
Управляющий символ (0x00–0x1F или 0x7F).

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

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

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

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

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 имеет значение false. Стандартные пустые символы — пробел (L' ') и горизонтальная вкладка (L'\t').

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

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

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

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

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

Значение аргумента 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 имеет значение false. Стандартные символы пробелов: пробел (), веб-канал формы (L' '), newline (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" );
   }
}

Выходные данные

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