我正在創建一個c殼,並有一個問題,我卡在一個無限循環。示例輸入/輸出:我輸入「ls -a」,命令的結果不斷地反覆打印到控制檯。如果我刪除標籤(我稱爲start:
)和goto
語句,那麼我的shell將執行該命令,然後完全退出shell程序。我也嘗試使用while(1)和for(;;)循環,但這些結果與我目前得到的輸出相同。我怎樣才能在這裏完成我的目標?所有的幫助表示讚賞。看下面的代碼。c殼卡在無限循環
int main(int argc, const char* argv[]){
char whole[1024];
int cmdCount = 1;
start:
scanf("%1023[^\t\n]", whole);
//....
goto start;
return 0;
}
仔細檢查你的第一個while循環。 – Annabelle
'if(third =「」)' - 同時出現兩個錯誤:(1)您無條件地將一個空字符串分配給'third'。由於空字符串不是「NULL」,所以共同作廢是錯誤的。 (2)你不能比較字符串和常規比較,'=='。要測試一個字符串是否爲空,請執行'if(* third =='\ 0')'。 –
@M Oehm這運行良好,並沒有錯誤。我正在檢查它是否爲空,如果它爲空,則設置爲空 – GregH