我正在创建一个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