summaryrefslogtreecommitdiff
path: root/reference/C/PROBLEMS/ascii2.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/PROBLEMS/ascii2.c')
-rw-r--r--reference/C/PROBLEMS/ascii2.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/reference/C/PROBLEMS/ascii2.c b/reference/C/PROBLEMS/ascii2.c
new file mode 100644
index 0000000..414ad1b
--- /dev/null
+++ b/reference/C/PROBLEMS/ascii2.c
@@ -0,0 +1,74 @@
+/************************************************************************
+ *
+ * problem: Display an Ascii table. Fab version
+ * Author: M J Leslie
+ * Date: 12-Mar-94
+ *
+ ************************************************************************/
+
+#include <stdio.h> /* printf, putchar, fopen, fclose */
+
+ /* Function declarations */
+int ascii(int);
+
+main()
+{
+ascii('h'); /* ascii table in Hex */
+ascii('d'); /* ascii table in decimal */
+ascii('r'); /* test invalid option */
+}
+
+/*************************************************************************
+ O/P an ascii table
+ Parms: int - O/P type 'h' hex
+ 'd' decimal
+ any other value not allowed.
+ Return codes: 0 = OK
+ 1 = Invalid parms passed.
+*************************************************************************/
+
+#define LINEBREAK 8
+#define FALSE 0
+#define TRUE 1
+
+int ascii(int type)
+{
+int ascii, inc=0;
+char ch; /* 'ascii' in char format. */
+char format[10]; /* Format statement for printf */
+
+ /* Are we to O/P in hex or decimal?
+ h - hex
+ d - decimal */
+switch(type)
+ {
+ case 'h' : strcpy(format,"%02X %c "); /* hex */
+ break;
+ case 'd' : strcpy(format,"%03d %c "); /* decimal */
+ break;
+ default : printf("\n Function syntax:\n"); /* error */
+ printf(" ascii('h') for hex O/P\n");
+ printf(" ascii('d') for decimal O/P\n");
+ return(1);
+ }
+ /* O/P a table heading */
+printf("\n\tAscii table");
+printf("\n\t-----------\n\n");
+
+ /* O/P the table */
+for (ascii=0; ascii<=127; ascii++) /* loop through the Ascii codes */
+ {
+ /* Check that the character is
+ printable... */
+ ch = ascii;
+ if ( isprint(ch) == FALSE )
+ ch = ' '; /* Replace with ' ' if not printable */
+
+ printf(format, ascii, ch); /* O/P numeric and character format */
+
+ /* count # of codes O/P and insert
+ L/F when required */
+ if ( ++inc%LINEBREAK == 0 ) printf("\n");
+ }
+return(0);
+}