Compartir a través de


Rutinas is e isw

Comentarios

Estas rutinas comprueban si los caracteres cumplen las condiciones especificadas.

Las rutinas is producen resultados significativos para cualquier argumento entero desde -1 (EOF) hasta UCHAR_MAX (0xFF), ambos incluidos. El tipo de argumento esperado es int.

Precaución

En el caso de las rutinas is, al pasar un argumento de tipo char, se podrían producir resultados imprevisibles. Un carácter de un solo byte de SBCS o MBCS de tipo char con un valor mayor que 0x7F es negativo. Si se pasa char, es posible que el compilador convierta el valor en un signed int o un signed long. El compilador puede agregar a este valor la extensión de signo, lo que provocaría resultados inesperados.

Las rutinas isw producen resultados significativos para cualquier valor entero desde -1 (WEOF) hasta 0xFFFF, ambos incluidos. El tipo de datos wint_t se define en <WCHAR.H> como unsigned short. Puede contener cualquier carácter ancho o el valor de fin de archivo de caracteres anchos (WEOF).

El valor de salida se ve afectado por el valor de la categoría LC_CTYPE de la configuración regional. Para obtener más información, vea setlocale. Las versiones de estas funciones sin el sufijo _l usan la configuración regional actual de su comportamiento dependiente de la configuración regional; las versiones con el sufijo _l son idénticas salvo que usan el parámetro locale pasado en su lugar.

En la configuración regional "C", las condiciones de prueba de las rutinas is son las siguientes:

isalnum
Alfanumérico (A - Z, a - z o 0 - 9).

isalpha
Alfabético (A - Z o a - z).

__isascii
Carácter ASCII (0x00 - 0x7F).

isblank
Tabulación horizontal o carácter de espacio (0x09 o 0x20).

iscntrl
Carácter de control (0x00 - 0x1F o 0x7F).

__iscsym
Letra, carácter de subrayado o dígito.

__iscsymf
Letra o carácter de subrayado.

isdigit
Dígito decimal (0 - 9).

isgraph
Carácter imprimible excepto el espacio (0x20).

islower
Minúscula (a - z).

isprint
Carácter imprimible incluido el espacio (0x20 - 0x7E).

ispunct
Carácter de puntuación.

isspace
Carácter de espacio en blanco (0x09 - 0x0D o 0x20).

isupper
Mayúscula (A - Z).

isxdigit
Dígito hexadecimal (A - F, a - f o 0 - 9).

En el caso de las rutinas isw, el resultado de la prueba de la condición especificada es independiente de la configuración regional. Las condiciones de prueba de las funciones isw son las siguientes:

iswalnum
iswalpha o iswdigit.

iswalpha
Cualquier carácter ancho que pertenezca a un conjunto que se define en la implementación para el que ni iswcntrl, ni iswdigit, ni iswpunct ni iswspace sea distinto de cero. iswalpha devuelve un valor distinto de cero solo para caracteres anchos para los que iswupper o iswlower sea distinto de cero.

iswascii
Representación de carácter ancho de caracteres ASCII (0x0000 - 0x007F).

iswblank
Carácter ancho correspondiente al carácter de espacio estándar o que pertenece a un conjunto de caracteres anchos que se define en la implementación para los que iswalnum es FALSE. Los caracteres en blanco estándar son el espacio (L' ') y la tabulación horizontal (L'\t').

iswcntrl
Carácter ancho de control.

__iswcsym
Cualquier carácter ancho para el que isalnum sea True, o el carácter '_'.

__iswcsymf
Cualquier carácter ancho para el que iswalpha sea True, o el carácter '_'.

iswctype
El carácter tiene la propiedad especificada por el argumento desc. Por cada valor válido del argumento desc de iswctype, hay una rutina equivalente de clasificación de carácter ancho, como se muestra en la tabla siguiente:

Equivalencia de iswctype(c, desc) con otras rutinas de prueba isw

Valor del argumento desc Equivalente: 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
Carácter ancho correspondiente a un carácter de dígito decimal.

iswgraph
Carácter ancho imprimible excepto el carácter ancho de espacio (L' ').

iswlower
Minúscula, o una de un conjunto de caracteres anchos que se define en la implementación para los que ni iswcntrl, ni iswdigit, ni iswpunct ni iswspace es distinto de cero. iswlower devuelve un valor distinto de cero solo para los caracteres anchos que corresponden a minúsculas.

iswprint
Carácter ancho imprimible, incluido el carácter ancho de espacio (L' ').

iswpunct
Carácter ancho imprimible que no es ni el carácter ancho de espacio (L' ') ni un carácter ancho para el que iswalnum sea distinto de cero.

iswspace
Carácter ancho correspondiente al carácter de espacio en blanco estándar o que pertenece a un conjunto de caracteres anchos que se define en la implementación para los que iswalnum es FALSE. Los caracteres de espacio en blanco estándar son: espacio (L' '), avance de formulario (L'\f'), nueva línea (L'\n'), retorno de carro (L'\r'), tabulación horizontal (L'\t') y tabulación vertical (L'\v').

iswupper
Carácter ancho que es una mayúscula o que pertenece a un conjunto de caracteres anchos definido en la implementación para los que ni iswcntrl, ni iswdigit, ni iswpunct, ni iswspace sea distinto de cero. iswupper devuelve un valor distinto de cero solo para los caracteres anchos que corresponden a mayúsculas.

iswxdigit
Carácter ancho que corresponde a un carácter de dígito hexadecimal.

Ejemplo

// 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                              .

Consulte también

Clasificación de caracteres
Configuración regional
setlocale, _wsetlocale
Interpretación de secuencias de caracteres de varios bytes
Funciones to