strncat或strcpy会导致循环继续下一次迭代吗?

时间:2017-02-27 19:30:38

标签: c++ string pointers

我在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来分隔空格。

1 个答案:

答案 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;。