0

バイソンのマニュアルに記載されている mfcalc の例の改良版に取り組んでおり、コードは hereにあります。

main.c ファイルから yyparse() を使用しようとして立ち往生していますが、実際にはコードは正常に動作します

int main (int argc, char const *argv[]) {
    init_table ();
    return yyparse ();
}

しかし、それにプロンプ​​トを追加したいので、書きました

int main (int argc, char const *argv[]) {
    char command[101];
    FILE *fp;
    init_table ();

    while (1) {
        printf ("[mfcalc]: "); /*prompt*/
        memset (command, 0x00, sizeof(command));
        fgets (command, 100, stdin);
        fp = fopen("command.txt", "w+");
        fprintf(fp, "%s", command);
        yyin = fp;
        yyparse ();
        fscanf (yyout, "%s", output);
        printf ("%s\n", output);
        fclose (fp);
    }
}

これは、yyin をstdin通常のファイルに再定義し、プロンプト メッセージを入れ、yyin でパーサーを実行し、yyout からの出力を読み取り、画面に出力することです。しかし、これは正しく機能しません。空白行だけが表示されます。プログラムを証明すると、次のようになります。

[mfcalc]: 3 + 4

[mfcalc]:

また、エラーコードは表示されません。これを解決するためのアイデアはありますか?

前もって感謝します。

4

2 に答える 2

0

ファイルの代わりに文字列から文字を取得するように、mfcalc のスキャナを書き換えてみませんか?

于 2013-02-18T02:01:57.327 に答える