C语言 从结构体访问双指针并在execvp中使用它



我试图在一个结构体中声明一个单char指针和一个双char指针:

typedef struct string3d {  
      char **x;  
      char *y;  
      } string3d;

我在主程序中声明了这个结构体的数组,然后我解析了字符串的输入,对它们进行标记并将它们传递给这个结构体。在主程序中,我调用一个函数来创建进程,该进程本质上是派生子进程。我像这样将这些字符串令牌传递给execvp:

execvp(*s1->y,s1->x);

这里s1被定义为

struct string3d *s1;

但是在编译时它会这样说:

错误:下标值既不是数组也不是指针。

有什么建议吗?

函数的签名是:

int execvp(const char *file, char *const argv[]);

这相当于:

int execvp(const char *file, char **const argv);

所以你必须这样命名它:

execvp(s1->y, s1->x);

(假设s1s2的类型为string3d *)

您需要确保s1是指针,而不是结构体。如果它是一个结构体,那么需要s1。X和s1。Y,而不是s1->x和s1-> Y

最新更新