[C] Interprete de Brainfuck

  • 1 Respuestas
  • 3227 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mr.blood

  • *
  • Underc0der
  • Mensajes: 73
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

[C] Interprete de Brainfuck

  • en: Mayo 15, 2013, 04:00:05 pm
Bueno, en un largo rato de aburrimiento he creado un interprete de Brainfuck. No se porque, pero me esta gustando este "lenguaje".

Código: (c) You are not allowed to view links. Register or Login
#include <stdio.h>

#define MAX 100

int array[MAX]={0}, i=0;
FILE *archivo;

void interprete(int instruccion);

int main(int argc, char *argv[])
{
int instruccion;
if(argc < 1)
{
return 1;
}
archivo=fopen(argv[1], "r");
while((instruccion=getc(archivo))!=EOF)
{
interprete(instruccion);
}
fclose(archivo);
putchar('\n');
return 0;
}

void interprete(int instruccion)
{
int pos, inst_bucle;
switch(instruccion)
{
case '.':
putchar(array[i]);
break;
case ',':
array[i]=getchar();
break;
case '>':
i++;
break;
case '<':
i--;
break;
case '+':
array[i]++;
break;
case '-':
array[i]--;
break;
case '[':
pos=ftell(archivo);
while(array[i]!=0)
{
fseek(archivo, pos, SEEK_SET);
inst_bucle=getc(archivo);
while(inst_bucle !=']' && inst_bucle != EOF)
{
interprete(inst_bucle);
inst_bucle=getc(archivo);
}
}
}
}

Sa1uDoS
« Última modificación: Febrero 08, 2014, 05:39:11 pm por Expermicid »

Desconectado i_ucv

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

Re:[C] Interprete de Brainfuck

  • en: Febrero 05, 2016, 03:10:27 pm
Buen aporte lince, that works!

Agrega compatibilidad con más de un archivo y queda perfecto.  8)