From 63802befc2e9e8dd6272f1b273fa7c99df1821ce Mon Sep 17 00:00:00 2001 From: Igor Date: Tue, 19 Jan 2010 17:37:49 +0300 Subject: Allowed comands, I/O fixes --- brainfuck.c | 16 +++++++++------- hello.bf | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/brainfuck.c b/brainfuck.c index 8e78adf..d23ae52 100644 --- a/brainfuck.c +++ b/brainfuck.c @@ -27,7 +27,7 @@ unsigned int cp = 0; unsigned int dp = 0; unsigned int max_dp = 0; unsigned int sp = 0; -char ignore [] = "\t\r\n "; +char commands [] = "+-<>,.[]cioux"; void read_code() @@ -48,7 +48,7 @@ void read_code() else if (c == '\n' || c == '\r') comment = 0; - if (comment || (NULL != strchr(ignore, c))) + if (comment || (NULL == strchr(commands, c))) continue; if (n >= allocated) @@ -138,11 +138,11 @@ void input() { switch (fmt) { - case 'i': scanf("%i", (signed int*) &(data[dp])); break; - case 'u': scanf("%u", (unsigned int*) &(data[dp])); break; - case 'c': scanf("%c", (char*) &(data[dp])); break; - case 'o': scanf("0%o", (unsigned int*) &(data[dp])); break; - case 'x': scanf("0x%X", (unsigned int*) &(data[dp])); break; + case 'i': scanf(format, (signed int*) &(data[dp])); break; + case 'u': scanf(format, (unsigned int*) &(data[dp])); break; + case 'c': scanf(format, (char*) &(data[dp])); break; + case 'o': scanf(format, (unsigned int*) &(data[dp])); break; + case 'x': scanf(format, (unsigned int*) &(data[dp])); break; } } @@ -204,6 +204,8 @@ void run_code() case '.': if (!trace) { printf(format, data[dp]); + if (fmt != 'c') + printf(" "); } ++cp; break; diff --git a/hello.bf b/hello.bf index a2fce2b..0e531cb 100644 --- a/hello.bf +++ b/hello.bf @@ -1,4 +1,4 @@ -c++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++ +++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++ .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. ------.--------.>+.>. -- cgit v1.2.3