每当我编译c程序时,我的两个argv[]都会出现这个错误。错误:初始值设定项无效char baseDir[]=argv[0];错误:初始值设定项无效char pattern[]=argv[1];
这是我的程序中主要方法的一个片段。
void walkDir(char *baseddir, char *pattern);
int main(int argc, char *argv[]){
char baseDir[] = argv[0];
char pattern[] = argv[1];
walkDir(baseDir, pattern);
if(count==0){
printf("No match found n");
}
printf("n Done n");
return 0;
}
argv[0]
和argv[1]
是char*
。它们指向未知长度的字符串。argv[0]
通常持有指向程序本身名称的指针,而argv[1]
持有指向提供给程序的第一个参数的指针。
要初始化char[]
,您需要这样的东西:
char baseDir[] = "a string literal";
在您的情况下,它不是字符串文字,因此您无法用它初始化char[]
,因此您可能应该只复制指针:
const char *baseDir = argv[1]; // a pointer to the first argument
const char *pattern = argv[2]; // a pointer to the second argument
我添加了const
,因为你不应该更改它们指向的字符串。我想你也不打算更改walkDir
函数中的字符串,所以相应地更改它:
void walkDir(const char *baseddir, const char *pattern)