aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor <pashev.igor@gmail.com>2010-01-19 17:37:49 +0300
committerIgor <pashev.igor@gmail.com>2010-01-19 17:37:49 +0300
commit63802befc2e9e8dd6272f1b273fa7c99df1821ce (patch)
tree9b9cbacc22775ef79125f18ed575791b64207852
parent0a48fa6f3329d89701ed8b6d430447af04777652 (diff)
downloadbrainfuck-63802befc2e9e8dd6272f1b273fa7c99df1821ce.tar.gz
Allowed comands, I/O fixes
-rw-r--r--brainfuck.c16
-rw-r--r--hello.bf2
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++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
+++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.