我正在尝试用 c 编写一个笨拙的解释器,但我无法让 fseek 工作。我不确定自己做错了什么,如果可能的话,我宁愿继续使用 fseek。我正在使用 fgetc 来单独检查每个 Brainfuck 字符,并使用 x 来保存 fgetc 的值。这是代码:
#include <stdio.h>
main(int argc, char *argv[]){
argc--; argv++;
char array[3000];
char *program = array;
int yo = 0;
fpos_t pos;
FILE *fp;
if(*argv != NULL){
fp = fopen(*argv,"rb");
int x;
int z = 1;
while(z){
x = fgetc(fp);
if(x == 62){
++program;
}else if(x == 60){
--program;
}else if(x == 43){
++*program;
}else if(x == 45){
--*program;
}else if(x == 46){
putchar(*program);
}else if(x == 44){
*program=getchar();
}else if(x == 93){
if(*program != 0){
int yo = 1;
while(yo){
fseek(fp, -1, SEEK_CUR);
if(fgetc(x) == 93){
putchar(93);
yo++;
}else if(fgetc(x) == 91){
putchar(91);
yo--;
}
}
}
}else if(x == EOF){
break;
}
}
fclose(fp);
}else{
printf("Error: no input file.\n");
}
return 0;
}