我正在尝试为某个东西创建一个模拟器,并且在处理器的主循环中,我想实现一个简单的方法来一次一步地执行CPU一个循环通过按Enter输入每个循环提示),以便我可以看到每个步骤正在执行的指令。此外,它允许您输入一个数字,而不仅仅是Enter来将默认步长值从1更改为其他值(因此它会跳过x个循环,然后一次返回1)。如果按Enter键,fgets()会忽略随后的输入
问题当我输入一个数字时(跳过循环的数量,然后每个周期再次提示我),它可以正常工作,但是当我按Enter键而不是输入数字时,我希望它默认为1步,而是按Enter键它只是在整个程序运行而没有再次提醒我。我如何进入== 1?
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'的值是多少?那么“step”的价值是什么? –