argv[0]和argv[1]的初始值设定项错误无效

  • 本文关键字:argv 错误 无效 c
  • 更新时间 :
  • 英文 :


每当我编译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)

最新更新