toupper -- a lesson for programmers
Geoffrey Collyer
geoff at utcsstat.UUCP
Sun Nov 13 14:36:09 AEST 1983
Martin Minow recently claimed
The behavior of toupper() and tolower() varies across the many
implementations of the C library. The following strategies
are known to work:
1. if (isupper(c))
c = tolower(c);
2. #ifdef tolower
#undef tolower
#define tolower(c) (whatever you feel is right)
*Neither* of these is correct. The first strategy should read
#include <ctype.h>
if (isascii(c) && isupper(c))
c = tolower(c);
The second needs an #endif after #undef tolower.
I don't mean to pick nits, but far too much code exists right now
that doesn't use isascii to check that arguments to the other <ctype.h>
functions are in range.
Geoff Collyer, U. of Toronto
More information about the Comp.lang.c
mailing list