C++ strncat或strcpy会导致循环继续到下一个迭代吗?

C++ strncat或strcpy会导致循环继续到下一个迭代吗?,c++,string,pointers,C++,String,Pointers,我有一个for循环中的以下代码。我正在尝试将字符串复制到字符**。然而,当我运行下面的代码时,我永远不会到达代码的“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 << "HER

我有一个for循环中的以下代码。我正在尝试将字符串复制到字符**。然而,当我运行下面的代码时,我永远不会到达代码的“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);
string str=“ls-1”;
字符串cmd=“ls”;
char**命令;
command=newchar*[str.size()+1];
strncat(*命令,str.c_str(),str.size+1);
也可以使用指针

char** command;
command = new char*[str.size()+1]
应该是

char* command;
command = new char[str.size()+1]

<>或更好,停止混合C++字符串和C样式字符串。

可能存在FLASHONDUCTORKOUT COOD<代码>的问题。用
std::endl
替换\n以强制刷新。请参阅。您为
**command
分配内存,但不为
*command
分配内存。您正在为char新建一个指针数组,这些指针没有设置为指向任何实际的字符缓冲区,因此您不能仅在其上使用strncat。你最好使用字符串和向量,它们更难搞错。你为什么要使用双指针?谢谢@BoPersson!问题是忘记给指针分配内存。