C++ 用于shell程序的二维字符数组的字符串向量
我正在编写一个shell程序,我知道execvp需要接收execvp(args[start],args)。最初,我读入命令并将其解析为字符串,存储“|”,以了解多个命令的拆分位置。现在我试着将向量转换成二维字符数组。我不知道这是否正确,但我认为每一行都是一个带有一组命令和参数的char*。这样我就可以在设置管道时循环使用它。以下是我目前掌握的代码:C++ 用于shell程序的二维字符数组的字符串向量,c++,shell,C++,Shell,我正在编写一个shell程序,我知道execvp需要接收execvp(args[start],args)。最初,我读入命令并将其解析为字符串,存储“|”,以了解多个命令的拆分位置。现在我试着将向量转换成二维字符数组。我不知道这是否正确,但我认为每一行都是一个带有一组命令和参数的char*。这样我就可以在设置管道时循环使用它。以下是我目前掌握的代码: char** vectorToChar(char** arr, vector<string> cmdsAndArgs) { ch
char** vectorToChar(char** arr, vector<string> cmdsAndArgs)
{
char* cmd;
char** args;
int i = 0;
int j = 0;
for (vector<string>::iterator it = cmdsAndArgs.begin(); it < cmdsAndArgs.end(); it++) {
string s = *it;
if (s == "|") {
cmd[j] = 0;
args[i] = cmd;
i++;
j = 0;
} else {
cmd[j] = *(char*)s.c_str();
j++;
}
}
cmd[j] = 0;
args[i] = cmd;
args[++i] = 0;
cout << endl << args[0][0] << endl;
return args;
}
char**vectorchar(char**arr,vector cmdsAndArgs)
{
char*cmd;
字符**args;
int i=0;
int j=0;
对于(vector::iterator it=cmdsAndArgs.begin();it 您只声明了一个指针,但没有为它分配任何空间。如果我用char*cmd[100]分配空间,那么我会得到错误:从不兼容的类型char*[100]分配给“char*”,它应该是char cmd[100];
部分有效。当我尝试使用ls命令时,我不能使用args[0][0]=l。但我想要的是args[0][0]=ls.args[0][0]
仅为单个字符。您可以cout
char* cmd;