230 lines
3.9 KiB
Plaintext
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(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* print a blank column */
|
|
printf("<td></td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (islower(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (isupper(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (isalpha(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (isdigit(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (isxdigit(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (isalnum(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (ispunct(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (isgraph(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (isprint(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (isspace(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* end entry */
|
|
printf("</td>");
|
|
|
|
/* begin the next entry */
|
|
printf("<td>");
|
|
|
|
if (iscntrl(i)) {
|
|
printf("*");
|
|
} else {
|
|
printf(" ");
|
|
}
|
|
|
|
/* 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 */
|