0

我正在努力实现一个brainfuck 解释器,并且我正在为两个连续,命令的调用而苦苦挣扎。

这是我的代码的摘录:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MEM_SIZE 30000
#define MAX_LINE_LENGTH 256

int main (int argc, char **argv)
{
    char *input = ",.,.";
    char bytes [MEM_SIZE] = {0};

    int pos=0;
    int i=0;

    while (input[i] != '\0'){

        switch (input[i]){
            case '.':
                printf ("%c", bytes[pos]);
                break;
            case ',':
                printf ("Enter Number:\n");
                bytes[pos] = fgetc (stdin);
                printf ("Number Entered\n");
                break;
            default:
                break;
        }
        i++;
    }
    return EXIT_SUCCESS;
}

程序的输出如下:

Enter Number:
3                  // This is me, manually entering the value.
Number Entered
3Enter Number:
Number Entered

为什么第二个电话不fgetc上班?

4

2 回答 2

5

是什么让您认为第二个电话fgetc不起作用?第二个fgetc读入\n(你确实按下了return,对吗?)。

另一个问题,你正在读入一个字符。fgetc返回一个int. EOF在盲目使用它之前,您应该检查一下。

于 2011-10-23T18:53:40.877 回答
1

您没有推进pos计数器,因此下次保存数据时bytes[pos]会覆盖以前的数据。

顺便提一句。尝试改变

printf ("Number Entered\n");

进入

printf ("Number Entered: %c\n", bytes[pos]);

调试您收到的信息fgetc()

于 2011-10-23T18:58:03.027 回答