old-www/LDP/LG/issue38/rogers_example04c.txt

230 lines
3.9 KiB
Plaintext

/* Written by James M. Rogers, 27 January 1999 */
/* This program is released to the public domain. */
/*
An example of a C cgi program
This program will produce html output to represent characters by their
group membership in the ctype library.
*/
#include <stdio.h>
#include <ctype.h>
#define UPPER 255
#define LOWER 0
main (){
int i;
/* print the content tag */
printf("Content-type: text/html\n\n");
/* print the html header */
printf("<html>\n<head>\n<title>Class Membership by Character</title>\n</head>\n<body>\n");
/* begin the table */
printf("<table border cellspacing=01 rowspacing=2>\n");
/* print a pretty blank row */
printf("<tr></tr>");
/* print a pretty blank row */
printf("<tr></tr>");
/* print the headings for the rows */
printf("<tr> <td></td> <td>value</td><td>hex</td><td>char</td><td></td><td>lower</td><td>upper</td><td>alpha</td><td>digit</td><td>xdigit</td><td>alnum</td><td>punct</td><td>graph</td><td>print</td><td>space</td><td>cntrl</td><td></td></tr>");
/* print a pretty blank row */
printf("<tr></tr>");
/* print a pretty blank row */
printf("<tr></tr>");
/* go thru the characters one at a time
from lowest to highest */
for (i=LOWER;i<=UPPER;i++) {
/* begin the next row */
printf("<tr> <td></td>");
/* begin the next entry */
printf("<td>");
printf("%d ", i);
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
printf("%X ", i);
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if(isprint(i)) {
printf("%c ", i);
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* print a blank column */
printf("<td></td>");
/* begin the next entry */
printf("<td>");
if (islower(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (isupper(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (isalpha(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (isdigit(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (isxdigit(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (isalnum(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (ispunct(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (isgraph(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (isprint(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (isspace(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* begin the next entry */
printf("<td>");
if (iscntrl(i)) {
printf("*");
} else {
printf("&nbsp;");
}
/* end entry */
printf("</td>");
/* end row */
printf("<td></td></tr>\n");
} /* end for */
/* print a pretty blank row */
printf("<tr></tr>");
/* print a pretty blank row */
printf("<tr></tr>");
/* close the table, body and html document, we are done */
printf("</table>\n</body>\n</html>\n");
} /* end main */