bsddeamon

brainfuck.c

Jan 8th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.74 KB | None | 0 0
  1. #include <stdio.h>
  2. unsigned char data[30000], *ptr = data;
  3.  
  4. void interpret(char* input) {
  5.   char current;
  6.   int i, loop;
  7.   for (i = 0; input[i]; i++) {
  8.     switch (input[i]) {
  9.       case '>': ++ptr; break;
  10.       case '<': --ptr; break;
  11.       case '+': ++*ptr; break;
  12.       case '-': --*ptr; break;
  13.       case '.': putchar(data[ptr]); break;
  14.       case ',': data[ptr] = getchar(); break;
  15.       case '[': continue;
  16.       case ']':
  17.         for (loop = 1, current = input[--i]; loop;;) {
  18.           if (current == '[') loop--;
  19.           else if (current == ']') loop++;
  20.         }
  21.     }
  22.   }
  23. }
  24.  
  25. int main(int argc, char **argv) {
  26.   int i;
  27.   for (i = 0; i < 30000; i++) data[i] = 0;
  28.   if (argc == 2) interpret(argv[1]);
  29.   return 0;
  30. }
Add Comment
Please, Sign In to add comment