19. Character Handling <ctype.h>#

The header <ctype.h> declares several functions useful for classifying and mapping characters. In all cases the argument is an int, the value of which shall be representable as an unsigned char or shall equal the value of the macro EOF. If the argument has any other value, the behavior is undefined.

The behavior of these functions is affected by the current locale. Those functions that have locale-specific aspects only when not in the “C” locale are noted below.

The term printing character refers to a member of a locale-specific set of characters, each of which occupies one printing position on a display device; the term control character refers to a member of a locale-specific set of characters that are not printing characters. [1] All letters and digits are printing characters.

Forward references: EOF (14.19.1), localization (14.11).

19.1. Character classification functions#

The functions in this subclause return nonzero (true) if and only if the value of the argument c conforms to that in the description of the function.

19.1.1. The isalnum function#

Synopsis

#include <ctype.h>
int isalnum(int c);

Description

The isalnum function tests for any character for which isalpha or isdigit is true.

Synopsis

#include <ctype.h>
int isalnum(int c);

Description

Checks for an alphanumeric character; it is equivalent to (isalpha(c) || isdigit(c)).

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c='c', c1=9, c2='$', c3='9';

  printf("%d %d %d %d\n", isalnum(c), isalnum(c1), isalnum(c2), isalnum(c3));

  return 0;
}

and the output is:

8 0 0 8

The output does not need any explation as it is blind-obvious.

19.1.2. The isalpha function#

Synopsis

#include <ctype.h>
int isalpha(int c);

Description

The isalpha function tests for any character for which isupper or islower is true, or any character that is one of a locale-specific set of alphabetic characters for which none of iscntrl, isdigit, ispunct or isspace is true. In the “C” locale, isalpha returns true only for the characters for which isupper or islower is true.

Synopsis

#include <ctype.h>
int isalpha(int c);

Description

Checks for an alphabetic character; in the standard “C” locale, it is equivalent to (isupper(c) || islower(c)). In some locales, there may be additional characters for which isalpha() is true—letters which are neither upper case nor lower case.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c='c', c1=9, c2='$', c3='9';

  printf("%d %d %d %d\n", isalpha(c), isalpha(c1), isalpha(c2), isalpha(c3));

  return 0;
}

and the output is:

1024 0 0 0

19.1.3. The isblank function#

Synopsis

#include <ctype.h>
int isblank(int c);

Description

The isblank function tests for any character that is a standard blank character or is one of a locale-specific set of characters for which isspace is true and that is used to separate words within a line of text. The standard blank characters are the following: space (’ ‘), and horizontal tab (’\t’). In the “C” locale, isblank returns true only for the standard blank characters.

Synopsis

#include <ctype.h>
int isblank(int c);

Description

Checks for a blank character; that is, a space or a tab.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c=' ', c1='\n', c2='  ', c3='9';

  printf("%d %d %d %d\n", isblank(c), isblank(c1), isblank(c2), isblank(c3));

  return 0;
}

and the output is:

1 0 1 0

19.1.4. The iscntrl function#

Synopsis

#include <ctype.h>
int iscntrl(int c);

Description

The iscntrl function tests for any control character.

Synopsis

#include <ctype.h>
int iscntrl(int c);

Description

Checks for a control character.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c=0;  //NUL
  char c1=1; //SOH or ctrl-A
  char c2=3; //STX or ctrl-B
  char c3=4; //ETX or ctrl-C

  printf("%d %d %d %d\n", iscntrl(c), iscntrl(c1), iscntrl(c2), iscntrl(c3));

  return 0;
}

and the output is:

2 2 2 2

19.1.5. The isdigit function#

Synopsis

#include <ctype.h>
int isdigit(int c);

Description

The isdigit function tests for any decimal-digit character.

Synopsis

#include <ctype.h>
int isdigit(int c);

Description

Checks for a digit (0 through 9).

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c1='a', c2='1';

  printf("%d %d\n", isdigit(c1), isdigit(c2));

  return 0;
}

and the output is:

0 2048

19.1.6. The isgraph function#

Synopsis

#include <ctype.h>
int isgraph(int c);

Description

The isgraph function tests for any printing character except space (’ ‘).

Synopsis

#include <ctype.h>
int isgraph(int c);

Description

Checks for any printable character except space.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c1='a', c2=' ';

  printf("%d %d\n", isgraph(c1), isgraph(c2));

  return 0;
}

and the output is:

32768 0

19.1.7. The islower function#

Synopsis

#include <ctype.h>
int islower(int c);

Description

The islower function tests for any character that is a lowercase letter or is one of a locale-specific set of characters for which none of iscntrl, isdigit, ispunct or isspace is true. In the “C” locale, islower returns true only for the lowercase letters

Synopsis

#include <ctype.h>
int islower(int c);

Description

Checks for a lower-case character.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c1='a', c2=' ';

  printf("%d %d\n", islower(c1), islower(c2));

  return 0;
}

and the output is:

512 0

19.1.8. The isprint function#

Synopsis

#include <ctype.h>
int isprint(int c);

Description

The isprint function tests for any printing character including space (’ ‘).

Synopsis

#include <ctype.h>
int isprint(int c);

Description

Checks for any printable character including space.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c1='a', c2=0;

  printf("%d %d\n", isprint(c1), isprint(c2));

  return 0;
}

and the output is:

16384 0

19.1.9. The ispunct function#

Synopsis

#include <ctype.h>
int ispunct(int c);

Description

The ispunct function tests for any printing character that is one of a locale-specific set of punctuation characters for which neither isspace nor isalnum is true. In the “C” locale, ispunct returns true for every printing character for which neither isspace nor isalnum is true.

Synopsis

#include <ctype.h>
int ispunct(int c);

Description

Checks for any printable character which is not a space or an alphanumeric character.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c1='a', c2=';';

  printf("%d %d\n", ispunct(c1), ispunct(c2));

  return 0;
}

and the output is:

0 4

19.1.10. The isspace function#

Synopsis

#include <ctype.h>
int isspace(int c);

Description

The isspace function tests for any character that is a standard white-space character or is one of a locale-specific set of characters for which isalnum is false. The standard white-space characters are the following: space (’ ‘), form feed (’f’), new-line (’n’), carriage return (’r’), horizontal tab (’t’), and vertical tab (’v’). In the “C” locale, isspace returns true only for the standard white-space characters.

Synopsis

#include <ctype.h>
int isspace(int c);

Description

Checks for white-space characters. In the “C” and “POSIX” locales, these are: space, form-feed (’f’), newline (’n’), carriage return (’r’), horizontal tab (’t’), and vertical tab (’v’).

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c1='\n', c2=';';

  printf("%d %d\n", isspace(c1), isspace(c2));

  return 0;
}

and the output is:

8192 0

19.1.11. The isupper function#

Synopsis

#include <ctype.h>
int isupper(int c);

Description

The isupper function tests for any character that is an uppercase letter or is one of a locale-specific set of characters for which none of iscntrl, isdigit, ispunct or isspace is true. In the “C” locale, isupper returns true only for the uppercase letters.

Synopsis

#include <ctype.h>
int isupper(int c);

Description

Checks for an uppercase letter.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c1='A', c2=';';

  printf("%d %d\n", isupper(c1), isupper(c2));

  return 0;
}

and the output is:

256 0

19.1.12. The isxdigit function#

Synopsis

#include <ctype.h>
int isxdigit(int c);

Description

The isxdigit function tests for any hexadecimal-digit character.

Synopsis

#include <ctype.h>
int isxdigit(int c);

Description

Checks for a hexadecimal digits, that is, one of:

0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F.

Return Value

The values returned are nonzero if the character c falls into the tested class, and a zero value if not.

Example

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

int main()
{
  char c1='a', c2=';';

  printf("%d %d\n", isxdigit(c1), isxdigit(c2));

  return 0;
}

and the output is:

4096 0