C++ strncat或strcpy会导致循环继续到下一个迭代吗?
我有一个for循环中的以下代码。我正在尝试将字符串复制到字符**。然而,当我运行下面的代码时,我永远不会到达代码的“HERE”部分。而是执行for循环的下一次迭代。有人能解释这种行为吗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
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!问题是忘记给指针分配内存。