如何声明函数一次传递一个参数argv [i]?在C.

时间:2015-02-27 14:19:08

标签: c pointers argv

调试时跳转到函数parseLayerFile文件名为(char **)0x40a04e< _Jv_RegisterClasses + 4235342> ...如何更正声明以获取有效的文件名值?

void parseArgs(WRAPPER_t *w, int argc, char *argv[])
{
   int i;
   for (i=1 ;i<argc ;i++) {
        if (strcmp(argv[i],"-layers") == 0) {
          i++;
          parseLayerFile(argv[i]);
        }
    } // for
}

int parseLayerFile(WRAPPER_t * w, char*filename[]){
  unsigned char * buffer; size_t size;
  size = get_fileContent(filename, &buffer);
}

int main(int argc, char **argv)
{
      WRAPPER_t * w;
      w = create_wrapper(); // w - main object
      threads_init(w);
      parseArgs(w, argc, argv);
      return 0;
}

1 个答案:

答案 0 :(得分:1)

int parseLayerFile(WRAPPER_t * w, char*filename[])

需要两个参数。

您只使用一个参数调用它:

parseLayerFile(argv[i]);

由于没有一个论点符合您的需要,请按以下方式修复该功能:

int parseLayerFile(const char * filename)
{
  unsigned char * buffer; 
  size_t size = get_fileContent(filename, &buffer);
}