Why does ctype have 0 as the first element, and all the ctype functions add 1 to get the proper index? This is so EOF can be characterized (no pun intended) by the ctype macros. As you recall EOF is (many times) defined to be -1.