我正在编写一个基本shell,并将我的输入解析为char *数组[3],例如:
char *args[3] = {"ls", "-l", NULL};
我的目的是将这些数组存储在另一个数组中,然后将它们传递给execvp来管道它们。 我难倒的地方是以下代码:
char **commands[256];
commands[0] = args;
前面的代码行抛出了一个不兼容的指针类型,我不明白为什么,因为我认为这是存储char * []类型数组的正确语法。我确信解决方案很简单,但它暗指我。
编辑:
好的代码行
commands[0] = args;
仍然会抛出错误。此外,当我尝试使用以下代码从**命令中提取*命令时:
char *temp;
temp = commands[0]
我收到一个不兼容的指针错误。难道我不能这样做吗?
答案 0 :(得分:1)
看起来你想要:
char *commands[256];
或
char **commands;
你声明的是指针的256个指针数组。
从您的示例中不清楚为什么要使用其他数组,因为您的args
数组已经适合传递给execvp
。