From fcfb2db63b01f209fb2c8fdc500023241435377f Mon Sep 17 00:00:00 2001 From: zlg Date: Mon, 27 Feb 2017 01:20:38 -0800 Subject: Solve Exercise 7-9: isupper, time, and space --- ch7/7-09_isupper-time-space.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 ch7/7-09_isupper-time-space.c diff --git a/ch7/7-09_isupper-time-space.c b/ch7/7-09_isupper-time-space.c new file mode 100644 index 0000000..bc96551 --- /dev/null +++ b/ch7/7-09_isupper-time-space.c @@ -0,0 +1,32 @@ +#include +#include /* strchr */ + +/* The C Programming Language: 2nd Edition + * + * Exercise 7-9: Functions like `isupper` can be implemented to save space + * or to save time. Explore both possibilities. + * + * Notes: I'm not really sure what they're expecting here. Assuming standard + * ASCII, the only uppercase characters are A-Z, and they're all sequential. + * Both ways to check seem very lean on necessary resources; I'm unaware of + * other methods. + */ + +int isupper_small(int c) { + return (c >= 'A' && c <= 'Z'); +} + +int isupper_fast(int c) { + return (strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", c) != NULL); +} + +int main(int argc, char **argv) { + int c = 'S'; + /* The inline conditional makes things more "human-friendly". */ + printf("is '%c' uppercase? %c\n", c, isupper_fast(c) ? 'y' : 'n'); + c = 'f'; + printf("...what about '%c'? %c\n", c, isupper_small(c) ? 'y' : 'n'); + c = ':'; + printf("Does a colon have an uppercase variant? %c\n", isupper_small(c) ? 'y' : 'n'); + return 0; +} -- cgit v1.2.3-54-g00ecf c756b2d2&follow=1'>commitdiff
AgeCommit message (Expand)AuthorFilesLines
2018-10-06Remove ID field from DBzlg3-38/+46
2018-10-06cli: change "Status" heading to "Progress"zlg2-36/+40
2018-09-29Bump to 0.3alpha5 for PyPIzlg1-1/+1
2018-09-29cli: Add pretty printing to 'list' commandzlg3-17/+107
2018-09-08setup.py: Bump to alpha4 for PyPIzlg1-1/+1
2018-09-08cli: add '--raw' option to list commandzlg2-9/+45
2018-09-08Add remaining filters to vgstash packagezlg1-2/+11
2018-09-04Update LICENSE to match setup.pyzlg1-80/+67
2018-09-03Branch off from master with pytest, tox, clickzlg16-778/+779
2018-03-18Flesh out filter types and ownership statuszlg3-82/+144
2018-03-18README.mdown: break line correctlyzlg1-1/+1
2018-03-18add 'playlog' list filterzlg2-2/+9
2018-03-13Update helpers a bitzlg1-2/+9
2018-03-13Make VGSTASH_DB_LOCATION point to a filezlg2-21/+20
2016-11-18Remove settings from helpers.shZe Libertine Gamer1-5/+0
2016-11-15Correct phrasing in README.Ze Libertine Gamer1-4/+4
2016-11-13DerpZe Libertine Gamer1-0/+1
2016-11-03Improve error handling in shell scriptsZe Libertine Gamer4-3/+23
2016-10-24Correct run_again, add recursionZe Libertine Gamer1-0/+4
2016-10-21Add quotes to correct behavior for arglistZe Libertine Gamer1-1/+1
2016-10-14updater.sh: add recursion, error handlingZe Libertine Gamer1-43/+101
2016-10-14Correct pipe-handling behaviorZe Libertine Gamer1-1/+9
2016-10-12Clarify a method to move between platformsZe Libertine Gamer1-2/+5