如何将const char *路径传递给fts_open?我想传递一个filePath。
答案 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, ...);