is, isw rotinas

Comentários

Essas rotinas testam caracteres com relação a condições especificadas.

As is rotinas produzem resultados significativos para qualquer argumento inteiro de -1 (EOF) para UCHAR_MAX (0xFF), inclusive. O tipo de argumento esperado é int.

Cuidado

Para as is rotinas, passar um argumento de tipo char pode gerar resultados imprevisíveis. Um caractere de byte único SBCS ou MBCS do tipo char com um valor maior do que 0x7F é negativo. Se um char for passado, o compilador poderá converter o valor em um signed int ou um signed long. Esse valor pode ter sua assinatura estendida pelo compilador, com resultados inesperados.

As isw rotinas produzem resultados significativos para qualquer valor inteiro de -1 (WEOF) para 0xFFFF, inclusive. O wint_t tipo de dados é definido <WCHAR.H> como um unsigned short. Ele pode conter qualquer caractere largo ou o valor de fim de arquivo de caractere largo (WEOF).

O valor de saída é afetado pela configuração da configuração de LC_CTYPE categoria da localidade. Para obter mais informações, consulte setlocale. As versões dessas funções sem o sufixo _l usam a localidade atual desse comportamento dependente da localidade. As versões com o sufixo _l são idênticas, exceto por usarem o parâmetro de localidade passado em seu lugar.

Na localidade "C", as condições de teste para as rotinas são as is seguintes:

isalnum
Alfanuméricos (A – Z, a – z ou 0 – 9).

isalpha
Alfabéticos (A – Z ou a – z).

__isascii
Caracteres ASCII (0x00 – 0x7F).

isblank
Tabulação horizontal ou caractere de espaço (0x09 ou 0x20).

iscntrl
Caractere de controle (0x00 – 0x1F ou 0x7F).

__iscsym
Letra, sublinhado ou dígito.

__iscsymf
Letra ou sublinhado.

isdigit
Dígito decimal (0 – 9).

isgraph
Caractere imprimível, exceto espaço (0x20).

islower
Letra minúscula (a – z).

isprint
Caracteres imprimíveis, incluindo espaço (0x20 – 0x7E).

ispunct
Caractere de pontuação.

isspace
Caractere de espaço em branco (0x09 – 0x0D ou 0x20).

isupper
Letra maiúscula (A – Z).

isxdigit
Dígito hexadecimal (A – F, a – f ou 0 – 9).

Para as isw rotinas, o resultado do teste para a condição especificada é independente da localidade. As condições de teste para as funções são as isw seguintes:

iswalnum
iswalpha ou iswdigit.

iswalpha
Qualquer caractere largo que faça parte de um conjunto definido pela implementação para o qual nenhum dos iswcntrl, iswdigit, iswpunct ou iswspace é diferente de zero. iswalpha retorna não zero somente para caracteres largos para os quais iswupper ou iswlower é diferente de zero.

iswascii
Representação de caractere largo de caractere ASCII (0x0000 – 0x007F).

iswblank
Caracteres largos que correspondem ao caractere de espaço padrão, ou que seja de um conjunto de caracteres largos definidos pela implementação para os quais iswalnum é false. Caracteres em branco padrão são espaço (L' ') e guia horizontal (L'\t').

iswcntrl
Caractere largo de controle.

__iswcsym
Qualquer caractere largo para o qual isalnum seja true, ou o caractere '_'.

__iswcsymf
Qualquer caractere largo para o qual iswalpha seja true, ou o caractere '_'.

iswctype
O caractere tem uma propriedade especificada pelo argumento desc. Para cada valor válido do desc argumento de iswctype, há uma rotina de classificação de caracteres largos equivalente, conforme mostrado na tabela a seguir:

Equivalência de outras isw rotinas de iswctype(c, desc) teste

Valor do desc argumento iswctype(c, desc) Equivalente
_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
Caractere largo correspondente a um caractere de dígito decimal.

iswgraph
Caractere largo imprimível, exceto caractere de espaço largo (L' ').

iswlower
Letra minúscula, ou uma que faça parte de um conjunto de caracteres largos definidos pela implementação para o qual nenhum dos iswcntrl, iswdigit, iswpunct ou iswspace é diferente de zero. iswlower retorna zero somente para caracteres largos que correspondem a letras minúsculas.

iswprint
Caractere largo imprimível, incluindo o caractere de espaço largo (L' ').

iswpunct
Caractere largo imprimível que não é um caractere largo de espaço (L' ') e não um caractere largo para o qual iswalnum não é zero.

iswspace
Caracteres largo que corresponde ao caractere de espaço em branco padrão, ou que seja de um conjunto de caracteres largos definido pela implementação para o qual iswalnum é false. Os caracteres de espaço em branco padrão são: espaço (L' '), feed de formulário (L'\f'), newline (L'\n'), retorno de carro (L'\r'), guia horizontal (L'\t') e guia vertical (L'\v').

iswupper
Caractere largo maiúsculo ou um que faça parte de um conjunto de caracteres largos definidos pela implementação para o qual nenhum dos iswcntrl, iswdigit, iswpunct ou iswspace é diferente de zero. iswupper retorna não zero somente para caracteres largos que correspondem a caracteres maiúsculos.

iswxdigit
Caractere largo que corresponde a um caractere de dígito hexadecimal.

Exemplo

// 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" );
   }
}

Saída

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                              .

Confira também

Classificação de caracteres
Localidade
setlocale, _wsetlocale
Interpretação de sequências de caracteres multibyte
to Funções