is, isw Routinen

Hinweise

Diese Routinen überprüfen Zeichen für bestimmte Bedingungen.

Die is Routinen erzeugen aussagekräftige Ergebnisse für ein beliebiges ganzzahliges Argument von -1 (EOF) bis UCHAR_MAX (0xFF), einschließlich. Der erwartete Argumenttyp ist int.

Achtung

Für die is Routinen kann das Übergeben eines Arguments vom Typ char unvorhersehbare Ergebnisse liefern. Ein SBCS- oder MBCS-Einzelbytezeichen vom Typ char mit einem Wert größer als 0x7F ist negativ. Wenn ein char Wert übergeben wird, kann der Compiler den Wert in ein signed int oder ein .signed long Wenn der Compiler diesen Wert mit einem Vorzeichen versieht, kann dies zu unerwarteten Ergebnissen führen.

Die isw Routinen erzeugen aussagekräftige Ergebnisse für einen ganzzahligen Wert von -1 (WEOF) bis 0xFFFF einschließlich. Der wint_t Datentyp wird als <WCHAR.H> ein unsigned short. Sie kann ein beliebiges breites Zeichen oder den End-of-File-Wert (WEOFBreitzeichen) enthalten.

Der Ausgabewert wird durch die Einstellung der LC_CTYPE Kategorieeinstellung des Gebietsschemas beeinflusst. Weitere Informationen finden Sie unter setlocale. Die Versionen dieser Funktionen ohne das _l-Suffix verwenden das aktuelle Gebietsschema für dieses vom Gebietsschema abhängige Verhalten; die Versionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch stattdessen den ihnen übergebenen Gebietsschemaparameter.

Im Gebietsschema "C" sind die Testbedingungen für die is Routinen wie folgt:

isalnum
Alphanumerisch (A-Z, a-z oder 0-9)

isalpha
Alphabetisch (A-Z oder a-z)

__isascii
Ein ASCII-Zeichen (0x00-0x7F)

isblank
Horizontaler Tabulator oder Leerzeichen (0x09 oder 0x20).

iscntrl
Ein Steuerzeichen (0x00-0x1F oder 0x7F)

__iscsym
Buchstabe, Unterstrich oder Ziffer.

__iscsymf
Buchstabe oder Unterstrich.

isdigit
Eine Dezimalstelle (0-9)

isgraph
Druckbares Zeichen mit Ausnahme von Leerzeichen (0x20).

islower
Ein Kleinbuchstabe (a-z)

isprint
Ein druckbares Zeichen einschließlich Leerzeichen (0x20-0x7E)

ispunct
Interpunktionszeichen.

isspace
Ein Leerzeichen (0x09-0x0D oder 0x20)

isupper
Ein Großbuchstabe (A-Z)

isxdigit
Eine Hexadezimalziffer (A-F, a-f oder 0-9)

Für die isw Routinen ist das Ergebnis des Tests für die angegebene Bedingung unabhängig vom Gebietsschema. Die Testbedingungen für die isw Funktionen sind wie folgt:

iswalnum
iswalpha oder iswdigit

iswalpha
Beliebiges Breitzeichen, das einen von der Implementierung abhängigen Satz darstellt, für den iswcntrl, iswdigit, iswpunct oder iswspace nicht 0 sind. iswalpha liefert einen Rückgabewert ungleich 0 (null) nur für Breitzeichen, für die iswupper oder iswlower ungleich 0 (null) ist.

iswascii
Eine Breitzeichendarstellung von ASCII-Zeichen (0x0000 - 0x007F)

iswblank
Breitzeichen, das dem Standardleerzeichen entspricht oder ein von der Implementierung abhängiger Breitzeichensatz, für den iswalnum "false" ist. Leere Standardzeichen sind Leerzeichen (L' ') und horizontale Tabstopps (L'\t').

iswcntrl
Steuerbreitzeichen.

__iswcsym
Beliebiges Breitzeichen, für das isalnum "true" ist oder das '_'-Zeichen.

__iswcsymf
Beliebiges Breitzeichen, für das iswalpha "true" ist oder das '_'-Zeichen.

iswctype
Das Zeichen hat die Eigenschaft, die vom desc-Argument angegeben wird. Für jeden gültigen Wert des desc Arguments von iswctype, gibt es eine entsprechende Breitzeichenklassifizierungsroutine, wie in der folgenden Tabelle gezeigt:

Äquivalenz von iswctype(c, desc) anderen isw Testroutinen

Wert des desc Arguments Äquivalent in 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
Breitzeichen, das einem Dezimalstellenzeichen entspricht.

iswgraph
Druckbares breites Zeichen mit Ausnahme des Leerzeichens (L' ').

iswlower
Kleinbuchstabe oder ein von der Implementierung abhängiger Breitzeichensatz für den iswcntrl, iswdigit, iswpunct oder iswspace nicht 0 sind. iswlower gibt einen Wert ungleich 0 (null) nur für Breitzeichen zurück, die den Kleinbuchstaben entsprechen.

iswprint
Druckbares breites Zeichen, einschließlich Leerzeichen (L' ').

iswpunct
Druckbares breites Zeichen, bei dem es sich nicht um ein leerzeichenweites Zeichen (L' ') und nicht um ein breites Zeichen handelt, für das iswalnum es sich nicht um ein zeichenfreies Zeichen handelt.

iswspace
Breitzeichen, das dem Standardleerzeichen entspricht oder ein von der Implementierung abhängiger Breitzeichensatz ist, für den iswalnum "false" ist. Standardzeichen für Leerzeichen sind: Leerzeichen (L' '), Formularfeed (L'\f'), Zeilenumbruch (L'\n'), Wagenrücklauf (L'\r'), horizontale Registerkarte (L'\t') und vertikale Registerkarte (L'\v').

iswupper
Ein Breitzeichen ist ein Großbuchstabe oder ein von der Implementierung abhängiger Breitzeichensatz, für den iswcntrl, iswdigit, iswpunct oder iswspace nicht 0 sind. iswupper gibt einen Rückgabewert ungleich 0 (null) nur für Breitzeichen zurück, die den Großbuchstaben entsprechen.

iswxdigit
Breitzeichen, das einem Hexadezimalziffernzeichen entspricht.

Beispiel

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

Siehe auch

Zeichenklassifizierung
Gebietsschema
setlocale, _wsetlocale
Interpretation von Multibytezeichensequenzen
to -Funktionen