私は何かのエミュレータを作成しようとしています。プロセッサのメインループでは、各ループのEnterキーを押すとプロンプトが表示されます)、各ステップでどのような指示が実行されているかを確認できます。さらに、デフォルトのステップ量を1から別の値に変更するために、Enterだけでなく数値を入力することもできます(xサイクル数をスキップしてから、1度に1に戻る)。C++ - fgets()は、Enterキーが押された場合に次の入力を無視します。
問題数字を入力すると(サイクル数をスキップして各サイクルをもう一度促します)、数字を入力するのではなくEnterキーを押すと、デフォルトの1ステップにしたい場合はEnterキーを押しますそれだけで
void CPU_loop()
{
...
static int step = 1;
char cmd[10];
if(step == 1)
{
if(fgets(cmd, 10, stdin) != NULL) // If you entered something other than Enter; doesn't work
{
step = std::atoi(cmd); // Set step amount to whatever you entered
}
}
else
{
--step;
}
...
}
ただ、手動で 'getchar'を使用して、自分自身を標準入力からの入力を読み込みます。改行文字を受け取るまで、テキストをバッファに入れてください。次に、あなたは望むようにテキストを処理することができます。 – bace1000
Enterを押すと 'cmd'の値は何ですか?それでは、「ステップ」の価値は何になりますか? –