diff options
Diffstat (limited to 'reference/C/CONTRIB/SNIP/ctrlprnt.c')
-rwxr-xr-x | reference/C/CONTRIB/SNIP/ctrlprnt.c | 40 |
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 */
|