[comp.lang.c] ctype functions

stan@Dixie.Com (Stan Brown) (03/26/91)

john@iastate.edu (Hascall John Paul) writes:

=>In article <collinsa.669647114@p4.cs.man.ac.uk> collinsa@p4.cs.man.ac.uk (Adrian Collins) writes:
=>}In <1991Mar20.112543.5515@ericsson.se> etxnisj@eos8c21.ericsson.se (Niklas Sjovall) writes:
=>}>I want to use a macro defined in ctype.h ... i don't fully understand it.
=>}>#define	isalpha(c)	((_ctype_+1)[c]&(_U|_L))
=>}>It's the part (_ctype_+1)[c] i don't understand.

=>}For some reason the first entry in the array isn't used for holding
=>}character type information (beats me why) ...

=>     The is????? macros are defined over the set (-1 ... 255) hence
=>the need to offset by 1 to `align' with C's "start at 0" arrays (-1
=>is for EOF).  This is so stuff like the following works correctly.

=>          do {
=>             c = getchar();
=>                 :
=>             if (isalpha(c)) fribbles(c);
=>                 :
=>          } while (c != EOF);

	There was an execelent discussion of this subject about two months
	ago in _C_USERS_ magazine.  It was a part of a serries that
	will eventually cover all the standard headers for an ANSI compliiant
	compiler.


-- 
Stan Brown	P. c. Design 	404-363-2303	Ataanta Ga.
(emory|gatech|uunet) rsiatl!sdba!stan           	"vi forever"
"Operating Systems, Like Editors Are Religions" -- Armando Stettner