我在for循环中有以下代码。我正在尝试将字符串复制到char **中。但是,当我运行下面的代码时,我从未进入代码的“HERE”部分。相反,执行for循环的下一次迭代。谁能解释这种行为?
string str = "ls -1";
string cmd = "ls";
char** command;
command = new char*[str.size()+1];
strncat(*command, str.c_str(), str.size+1);
cout << "HERE\n";
*command = strtok(*command, " ");
execvp(cmd.c_str(), command);
修改
我使用char **来拟合execvp的参数,并使用strtok来分隔空格。
答案 0 :(得分:0)
也可能是指针
char** command;
command = new char*[str.size()+1]
应该是
char* command;
command = new char[str.size()+1]
或者更好的是,停止混合使用c ++ string和c style&#39; strings&#39;。