对于学校任务,我必须制作一个Unix shell。我们必须实现的功能之一是能够在用“;”分隔时从同一行执行多个命令。我试图使用strtok来做到这一点,但由于某种原因,它只执行最后一个命令(例如,“ls; pwd”只执行pwd)。这两个命令单独使用时可以正常工作,但不能在一起使用下面是涉及的strtokC:使用strtok解析命令行输入
const char* s = ";";
char* token = strtok(pinput, s);
while(token != NULL)
{
int argc = get_argc(token);
char** argv = get_argv(argc, token);
parse(argc, argv);
token = strtok(NULL, s);
}
}
我测试过get_argc,get_argv代码,并解析了一堆,他们似乎都做工精细。我在使用strtok时有什么不对吗?谢谢。
我们需要看一个包含'get_argc()'的完整代码示例。 'get_argv()'和'parse()'。你可能在这3个函数中使用'strtok()'? – uesp