Advertisement
Guest User

bf2c.c

a guest
May 14th, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.99 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void print_prelude(FILE *output);
  4.  
  5. int main(int argc, char **argv) {
  6.     FILE *src = NULL;
  7.     FILE *output;
  8.     if (argc != 2) return -1;
  9.     char op;
  10.  
  11.     src = fopen(argv[1], "r");
  12.     output = fopen("out.c", "w");
  13.  
  14.     print_prelude(output);
  15.  
  16.     while (!feof(src)) {
  17.         op = fgetc(src);
  18.         switch(op) {
  19.             case '>': fputs("++ptr;\n", output); break;
  20.             case '<': fputs("--ptr;\n", output); break;
  21.             case '+': fputs("++*ptr;\n", output); break;
  22.             case '-': fputs("--*ptr;\n", output); break;
  23.             case '.': fputs("putchar(*ptr);\n", output); break;
  24.             case ',': fputs("*ptr = getchar();\n", output); break;
  25.             case '[': fputs("while (*ptr) {\n", output); break;
  26.             case ']': fputs("}\n", output); break;
  27.         }
  28.     }
  29.  
  30.     fputs("return 0;\n}", output);
  31.     fclose(src);
  32.     fclose(output);
  33.  
  34.     return 0;
  35. }
  36.  
  37. void print_prelude(FILE *output) {
  38.     fputs(
  39.             "#include <stdio.h>\n"
  40.             "int main(void) {\n"
  41.             "\tchar array[30000] = {0};\n"
  42.             "\tchar *ptr = array;\n"
  43.             "\n",
  44.             output
  45.     );
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement