如何将const char *指针传递给fts_open()

时间:2012-03-28 20:44:25

标签: c

如何将const char *路径传递给fts_open?我想传递一个filePath。

3 个答案:

答案 0 :(得分:3)

我假设您想知道如何将此单一路径传递给argv的{​​{1}}(类型char const **)参数。因此描述了该参数:

  

<强>的argv

     

以NULL结尾的字符指针数组,命名一个或多个组成文件层次结构的路径。

因此,您需要创建一个长度为2的数组,其元素的类型为fts_open。将您的路径放在第一个元素中,并将NULL放在第二个元素中。像这样:

char*

您现在可以将char const *argv[] = { path, NULL }; 传递给argv

答案 1 :(得分:2)

fts_open 期望 char* 数组与 main 函数的 argv 数组兼容(并且由于 char** 不能转换为 {{ 1}}).

所以你需要创建这样一个数组。特别是,如果您在 char const** 变量中有路径,则必须复制字符串;例如:

char const*

这是使用静态大小的缓冲区。 Depending on your requirements 您可能希望改为动态分配适当大小的缓冲区。

可能有可能(甚至可能)char path_copy[PATH_MAX]; strcpy(path_copy, path); char *argv[] = {path_copy, NULL}; FTS *fts = fts_open(argv, FTS_PHYSICAL, nullptr); 并没有真正修改它的参数,所以抛弃 fts_open 而不是复制字符串应该是可能的。但是 const 的文档没有提供这样的保证,所以我建议不要这样做。

答案 2 :(得分:0)

fts_open()的第一个参数是“一个以字符串结尾的NULL终止数组,命名一个或多个构成文件层次结构的路径。”

所以,你可以像这样传递它:

char *pathlist[2];

pathlist[0] = filePath;
pathlist[1] = NULL;

fts_open( pathlist, ...);