summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/ctrlprnt.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/ctrlprnt.c')
-rwxr-xr-xreference/C/CONTRIB/SNIP/ctrlprnt.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/ctrlprnt.c b/reference/C/CONTRIB/SNIP/ctrlprnt.c
new file mode 100755
index 0000000..0ae15d1
--- /dev/null
+++ b/reference/C/CONTRIB/SNIP/ctrlprnt.c
@@ -0,0 +1,40 @@
+/*
+** Print a line of text, displaying Ctrl characters using leading carets
+** public domain by Bob Stout
+*/
+
+void ctrl_print(char *line)
+{
+ while (*line)
+ {
+ if (' ' > *line)
+ {
+ putchar('^');
+ putchar('@' + (*line++));
+ }
+ else putchar(*line++);
+ }
+ if (!strcmp((line - 2), "\x0d\x0a") || !strcmp((line - 2), "\x0a\x0d"))
+ putchar('\n');
+}
+
+#ifdef TEST
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+void main(void)
+{
+ char *p, *test = "This is a test";
+
+ for (p = strupr(test); *p; ++p)
+ {
+ if (isalpha(*p))
+ *p = *p - 64;
+ }
+ ctrl_print(test);
+}
+
+#endif /* TEST */