Question about toupper and tolower
Tom Clark
tsclark at ihnp4.UUCP
Thu Nov 10 14:54:05 AEST 1983
John Rogers (fortune!jr) asked about tolower and toupper, and stated that in
System V (and version 7 and system III) tolower/toupper were defined as macros
in /usr/include/ctype.h. Well, actually the macros defined in ctype.h are
called _tolower(c) and _toupper(c) and do indeed perform no checking. The only
purpose of the ctype header file is to define character types (e.g. for running
C on a non-ASCII machine). There are routines tolower(c) and toupper(c) in libc
which will do what you want (check case before conversion). The source is in
/usr/src/lib/libc/gen in tolower.c and toupper.c. I can't speak for version 7
or system III, but suspect they do much the same thing. You should also note
that the macros cannot be recoded to say:
#define tolower(c) (isupper(c) : _tolower(c) : c)
because this will result in c being evaluated more than once, which will
*definitely* break a lot of programs!
--
Tom Clark, BTL IH, ihnp4!tsclark, (312) 979-2620
More information about the Comp.lang.c
mailing list