0

私はbrainfuckインタープリターの実装に取り​​組んでおり、2つの連続,したコマンドの呼び出しに苦労しています.

これが私のコードの抜粋です:

#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

2 番目の呼び出しが機能しないのはなぜfgetcですか?

4

2 に答える 2

5

への 2 番目の呼び出しが機能していないと思われる理由は何fgetcですか? 2 番目fgetcは an を読み取ります\n( を押しましたよreturnね?)。

もう 1 つの問題は、char に読み込んでいるということです。fgetcを返しますintEOF盲目的に使用する前に、これを確認する必要があります。

于 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 に答える