在C中连续调用fgetc

时间:2011-10-23 18:51:29

标签: c fgetc

我正在努力实现一个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不起作用?

2 个答案:

答案 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()收到的信息。