我正在尝试使用execv()函数。
我试图将我的参数命令传递到左侧。
execv(file,arguments);
我正在使用char *来解析我的shell的输入用户输入。
execv的第二个参数采用char * const *。
有没有一种方法可以将char * const强制转换为char * const *?
我在下面尝试
char * arg;
char *const a[] = (char *const)arg;
error: invalid initializer
char *const a[] = (char *const)arg;
^
但这不起作用,并给我错误。
帮助将不胜感激。
输入错误char *const a[] = (char *const)arg;
不是由于转换不正确。这是因为char *const a[]
声明了一个数组,并且数组的初始化程序必须在大括号1中{ … }
,但是您只指定了一个不使用大括号的初始化程序。
此外,argv
参数toexecv
应该是一个指针数组,其中第一个指针指向一个字符串,该字符串包含正在执行的程序的文件名(按照惯例,这不是必需的),而最后一个是空指针。因此,您对的定义a
应类似于:
char * const a[] = { FileNameOfProgram, arg, NULL };
1除非使用字符串文字来初始化数组,但是这里不是这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句