我正在努力实现一个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
不起作用?
答案 0 :(得分:5)
是什么让你认为对fgetc
的第二次调用无效?第二个fgetc
读取\n
(您按了return
,对吗?)。
另一个问题,你正在阅读一个char。 fgetc
会返回int
。在盲目使用之前,您应该检查EOF
。
答案 1 :(得分:1)
您没有推进pos
计数器,以便下次将数据保存到bytes[pos]
时覆盖以前的数据。
顺便说一下。试着改变
printf ("Number Entered\n");
到
printf ("Number Entered: %c\n", bytes[pos]);
调试从fgetc()
收到的信息。