Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Sun, 25 Sep 2011 07:41:17 -0500 Message-ID: <4E7F216E.2E41@mindspring.com> Date: Sun, 25 Sep 2011 08:41:18 -0400 From: pete Reply-To: pfiland@mindspring.com Organization: PF X-Mailer: Mozilla 3.04Gold (WinNT; I) MIME-Version: 1.0 Newsgroups: comp.lang.c Subject: Re: A very simple parser with scanf & C References: <88940b22-00a2-4d6e-81e1-51214b073a96@fe21g2000vbb.googlegroups.com><0.7e9ca0c91e324ac14acd.20110923220028BST.87y5xfug7n.fsf@bsb.me.uk><0.f03c4aaff4700164ddab.20110924003423BST.8762kivnnk.fsf@bsb.me.uk><0.f62ca533fe3fac1321b9.20110924024253BST.87zkhuu34y.fsf@bsb.me.uk><0.4c392657a43f99297620.20110924144538BST.87fwjmt5od.fsf@bsb.me.uk> <0.a5ee7a90b39e01baef80.20110924222135BST.87litdskkg.fsf@bsb.me.uk> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 32 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 4.154.223.30 X-Trace: sv3-aDQKL09YXiEGgomELjYH7tZaXDLbRyQxeovPGE0+jgCZjwlJGCM3gqANSBua1FIXU2kVlROHTFlmqb6!22CV4OLm4R2hvCheSWB0U/ONeimXOR0AzFuchQvUmPyxZZ0ikJdBopuH8yPFoaRWDptyesWNfI2R!QEvfAdzuDA== X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2310 Xref: x330-a1.tempe.blueboxinc.net comp.lang.c:10915 Gene wrote: > /* > * Convert a character to lower case. > */ > char lowercase(char c) > { > return ('A' <= c && c <= 'Z') ? c - 'A' + 'a' : c; > } That's not 100% portable. At least it won't work with EBCDIC. http://en.wikipedia.org/wiki/Extended_Binary_Coded_Decimal_Interchange_Code #include #include #define UPPER "ABCDEFGHIJKLMNOPQRSTUVWXYZ" #define LOWER "abcdefghijklmnopqrstuvwxyz" int to_lower(int c) { const char *lower; const char *const upper = UPPER; lower = CHAR_MAX >= c && c > '\0' ? strchr(upper, c) : NULL; return lower != NULL ? LOWER[lower - upper] : c; } -- pete