我正在嘗試爲某個東西創建一個模擬器,並且在處理器的主循環中,我想實現一個簡單的方法來一次一步地執行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」的價值是什麼? –