Interview answers verified by specialists.

Find interview questions and answers on this website:

See right interview answers on 30 common job interview questions

How do I determine whether a character is numeric, alphabetic, and so on?

The header file ctype.h defines various functions for determining what class a character belongs to. These
consist of the following functions:

 Function Character Class Returns Nonzero for Characters
 isdigit()-Decimal digits-0-9
 isxdigit()-Hexadecimal digits-0-9, a-f, or A-F
 isalnum()-Alphanumerics-0-9, a-z, or A-Z
 isalpha()-Alphabetics-a-z or A-Z
 islower()-Lowercase alphabetics -a-z
 isupper()-Uppercase alphabetics-A-Z
 isspace()-Whitespace-Space, tab, vertical tab, newline, form feed, or carriage return
 isgraph()-Nonblank characters-Any character that appears nonblank when printed (ASCII 0x21 through 0x7E)
 isprint()-Printable characters-All the isgraph() characters, plus space
 ispunct()-Punctuation-Any character in isgraph() that is not in isalnum()
 iscntrl()-Control characters-Any character not in isprint() (ASCII 0x00 through 0x1F plus 0x7F)

There are three very good reasons for calling these macros instead of writing your own tests for character
classes. They are pretty much the same reasons for using standard library functions in the first place. First,
these macros are fast. Because they are generally implemented as a table lookup with some bit-masking magic,
even a relatively complicated test can be performed much faster than an actual comparison of the value of
the character.

Second, these macros are correct. It's all too easy to make an error in logic or typing and include a wrong
character (or exclude a right one) from a test.

Third, these macros are portable. Believe it or not, not everyone uses the same ASCII character set with PC
extensions. You might not care today, but when you discover that your next computer uses Unicode rather
than ASCII, you'll be glad you wrote code that didn't assume the values of characters in the character set.

The header file ctype.h also defines two functions to convert characters between upper- and lowercase
alphabetics. These are toupper() and tolower(). The behavior of toupper() and tolower() is undefined
if their arguments are not lower- and uppercase alphabetic characters, respectively, so you must remember
to check using islower() and isupper() before calling toupper() and tolower().