summaryrefslogtreecommitdiff
path: root/reference/C/EXAMPLES/convesc.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/EXAMPLES/convesc.c')
-rw-r--r--reference/C/EXAMPLES/convesc.c118
1 files changed, 118 insertions, 0 deletions
diff --git a/reference/C/EXAMPLES/convesc.c b/reference/C/EXAMPLES/convesc.c
new file mode 100644
index 0000000..f79b11e
--- /dev/null
+++ b/reference/C/EXAMPLES/convesc.c
@@ -0,0 +1,118 @@
+
+/**********************************************************************
+ *
+ * Description: If a text string is created outside of C, the
+ * escape codes are not correctly stored. This
+ * routine will prepare them for C's use.
+ *
+ * Author : M.J. Leslie
+ * Date: 25-Feb-96
+ *
+ *********************************************************************/
+
+void mos_ConvertEscapeCode(char *String, char *Code);
+
+int main(int argc, char *argv[])
+{
+ if (argc == 1)
+ {
+ puts("\n\tPlease provide a text string on the command line.");
+ }
+ else
+ {
+ printf("I/P string is: %s\n", argv[1]);
+ mos_ConvertEscapeCode(argv[1], "\\n");
+ mos_ConvertEscapeCode(argv[1], "\\t");
+ mos_ConvertEscapeCode(argv[1], "\\v");
+ mos_ConvertEscapeCode(argv[1], "\\b");
+ mos_ConvertEscapeCode(argv[1], "\\r");
+ mos_ConvertEscapeCode(argv[1], "\\f");
+ printf("O/P string is: %s\n", argv[1]);
+ }
+}
+
+/**********************************************************************
+ *
+ * Purpose: To convert escape codes in text form into
+ * actual codes.
+ *
+ * I/P -------------------------------
+ * | A | B | C | \ | n | D | E | F |
+ * -------------------------------
+ *
+ * O/P ----------------------------
+ * | A | B | C | \n | D | E | F |
+ * ----------------------------
+ *
+ **********************************************************************/
+
+void mos_ConvertEscapeCode(char *String, char *Code)
+{
+ char *Ptr1;
+ char *Ptr2;
+ char EscCode = ' ';
+
+ /* ... Make sure the Code is long enough */
+
+ if (strlen(Code) == 2)
+ {
+
+ /* ... Find the right escape code. */
+
+ switch(Code[1])
+ {
+ case 'n': /* New line */
+ EscCode = '\n';
+ break;
+ case 't': /* Horizontal tab */
+ EscCode = '\t';
+ break;
+ case 'v': /* Vertical tab */
+ EscCode = '\v';
+ break;
+ case 'b': /* Backspace */
+ EscCode = '\b';
+ break;
+ case 'r': /* Return */
+ EscCode = '\r';
+ break;
+ case 'f': /* Form feed */
+ EscCode = '\f';
+ break;
+ default:
+ break;
+ }
+
+ /* ... If the escape code has been found */
+
+ if (EscCode != ' ')
+ {
+
+ /* ... Copy each character until the text code is found,
+ ... insert the escape code and copy the remaining chars. */
+
+ for (Ptr1=Ptr2=String; Ptr2 < (String+strlen(String)+1); Ptr1++, Ptr2++)
+ {
+ if ((*Ptr2 == '\\') && (*(Ptr2+1) == Code[1]))
+ {
+ *Ptr1 = EscCode;
+ Ptr2++;
+ }
+ else
+ {
+ *Ptr1 = *Ptr2;
+ }
+ }
+ }
+ }
+}
+
+
+
+
+
+
+
+
+
+