ctype.h in C


Reading time: 30 minutes | Coding time: 10 minutes

The ctype.h header file of the C Programming Language provide several functions that are used to testing different characters and changing some properties. Some common tasks are to check if a character is upper case, lower case, hexadecimal digit and more.

If one has a knowledge of mapping of characters to the numeric value, then developing such functions is easy.

We can include the ctype.h header file as:

#include <ctype.h>

Library Functions of ctype.h

The following are the functions defined in the header ctype.h:

  • isalnum: is character alphanumeric?
  • isalpha: is character alphabetic?
  • iscntrl: is it a control character (like newline)?
  • isdigit: is it a digit?
  • isgraph: does it have a graphical representation?
  • islower: is it a lower case character?
  • ispunct: is it a punctuation?
  • isspace: is it a space?
  • isupper: is it a upper case character?
  • isxdigit: is it a hexadecimal?
  • tolower: convert to lower case character
  • toupper: convert to upper case character

We will go through each function in detail now.

isalnum()

  • isalnum() - This function checks whether the passed character is alphanumeric.
#include <stdio.h>
#include <ctype.h>


int main(void) {
   char a;
    printf("Enter a character: ");
    scanf("%c", &a);
    if (isalnum(a) == 0)
        printf("%c is not an alphanumeric character.", a);
    else
        printf("%c is an alphanumeric character.", a);
    
    return 0;
}
    

Output:

Enter a character: /
/ is not an alphanumeric character.

isalpha()

  • isalpha() - This function checks whether the passed character is alphabetic.
#include <stdio.h>
#include <ctype.h>


int main(void) {
    char a;
    printf("Enter a character: ");
    scanf("%c", &a);
    if (isalpha(a) == 0)
         printf("%c is not an alphabet.", a);
    else
         printf("%c is an alphabet.", a);
    return 0;
}

Output:

Enter a character: a
a is an alphabet.

iscntrl()

  • iscntrl() - This function checks whether the passed character is control character.
#include <stdio.h>
#include <ctype.h>


int main()
{
    char a;
    int outcome;
    a = 'J';
    outcome = iscntrl(a);
    printf("When %c is passed to iscntrl() = %d\n", a, outcome);
    a = '\n';
    outcome = iscntrl(a);
    printf("When %c is passed to iscntrl() = %d", a, outcome);
    return 0;
}

Output:

When J is passed to iscntrl() = 0
When
 is passed to iscntrl() = 2

isdigit()

  • isdigit() - This function checks whether the passed character is decimal digit.
#include <stdio.h>
#include <ctype.h>
int main()
{
    char a;
    printf("Enter a character: ");
    scanf("%c",&a);
    if (isdigit(a) == 0)
         printf("%c is not a digit.",a);
    else
         printf("%c is a digit.",a);
    return 0;
}

Output:

Enter a character: a
a is not a digit.

isgraph()

  • isgraph() - This function checks whether the passed character has graphical representation using locale.
#include <stdio.h>
#include <ctype.h>
int main()
{
   int one = '7';
   int two = ' ';
   int three = 'r';
    
   if( isgraph(one) ) {
      printf("%c can be printed\n", one );
   } else {
      printf("%c can't be printed\n", one );
   }
   
   if( isgraph(two) ) {
      printf("%c can be printed\n", two );
   } else {
      printf("%c can't be printed\n", two );
   }
   
   if( isgraph(three) ) {
      printf("%c can be printed\n", three );
   } else {
      printf("%c can't be printed\n", three );
   }
   
   return(0);
}

Output:

7 can be printed
  can't be printed
r can be printed

islower()

  • islower() - This function checks whether the passed character is lowercase letter.
#include <stdio.h>
#include <ctype.h>

int main () {
   int one = '9';
   int two = 'z';
   int three = 'B';
    
   if( islower(one) ) {
      printf("%c is lowercase character\n", one );
   } else {
      printf("%c is not lowercase character\n", one );
   }
   
   if( islower(two) ) {
      printf("%c is lowercase character\n", two );
   } else {
      printf("%c is not lowercase character\n", two );
   }
   
   if( islower(three) ) {
      printf("%c is lowercase character\n", three );
   } else {
      printf("%c is not lowercase character\n", three );
   }
   
   return(0);
}

Output:

9 is not lowercase character
z is lowercase character
B is not lowercase character

ispunct()

  • ispunct() - This function checks whether the passed character is a punctuation character.
#include <stdio.h>
#include <ctype.h>

int main () {
   int one = '.';
   int two = 'w';


   if( ispunct(one) ) {
      printf("%c is a punctuation character\n", one );
   } else {
      printf("%c is not a punctuation character\n", one );
   }
   
   if( ispunct(two) ) {
      printf("%c is a punctuation character\n", two );
   } else {
      printf("%c is not a punctuation character\n", two );
   }

   return 0;
}

Output:

. is a punctuation character
w is not a punctuation character

isspace()

  • isspace() - This function checks whether the passed character is white-space.
#include <stdio.h>
#include <ctype.h>

int main () {
   int one = ' ';
  

   if( isspace(one) ) {
      printf("%c is a white-space character\n", one );
   } else {
      printf("%c is not a white-space character\n", one );
   }
   
   return(0);
}

Output:

  is a white-space character

isupper()

  • isupper() - This function checks whether the passed character is an uppercase letter.
#include <stdio.h>
#include <ctype.h>

int main () {
   int one = 'f';
  

   if( isupper(one) ) {
      printf("%c is an uppercase character\n", one );
   } else {
      printf("%c is not an uppercase character\n", one );
   }
   
   return(0);
}

Output:

f is not an uppercase character

isxdigit()

  • isxdigit() - This function checks whether the passed character is a hexadecimal digit.
#include <stdio.h>
#include <ctype.h>

int main () {
   char one[] = "2xP";
  
   if( isxdigit(one[0]) ) {
      printf("%s is a hexadecimal character\n", one );
   } else {
      printf("%s is not a hexadecimal character\n", one );
   }
 
   return(0);
}

Output:

2xP is a hexadecimal character

tolower()

  • tolower() - This function converts uppercase letters to lowercase.
#include <stdio.h>
#include <ctype.h>

int main () {
   int x = 0;
   char a;
   char str[] = "Hello World";
	
   while( str[x] ) {
      putchar(tolower(str[x]));
      x++;
   }
   
   return(0);
}

Output:

hello world

toupper()

  • toupper() - This function converts lowercase letters to uppercase.
#include <stdio.h>
#include <ctype.h>

int main () {
   int x = 0;
   char a;
   char str[] = "Hello World";
	
   while( str[x] ) {
      putchar(toupper(str[x]));
      x++;
   }
   
   return(0);
}

Output:

HELLO WORLD

With this, you have the complete knowledge to use ctype.h in C.