2012-03-28 80 views

回答

3

我假设您想知道如何将此单一路径传递给参数fts_openargv(类型char const **)。该参数如此描述:

的argv

是字符指针命名一个或多个路径组成文件层次结构的一个NULL终止的阵列。

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

char const *argv[] = { path, NULL }; 

您现在可以通过argvfts_open

+2

不过,fts_open只需要'char * const *'而不是'const char * const *': -/ – 2012-03-28 20:55:20

+0

您可以将非const指针传递给接受const指针的函数。在const正确性中,函数签名告诉你函数不会修改参数指向的数据。在这种情况下,'fts_open'不会修改'argv'的内容,或者它的元素指向的值。 – tomlogic 2012-03-28 21:00:50

+0

但我原来的版本有点sl。。我已经添加了适当的'const'限定符。也就是说,我怀疑'const'的存在使得Helium3更难理解双重间接。为了便于说明,有时一次只关注一个问题可能会更好。 – 2012-03-28 21:02:11

0

fts_open()的第一个参数是“一个由NULL结尾的字符指针数组,指定构成文件层次结构的一个或多个路径。”

所以,你可以通过这样的:

char *pathlist[2]; 

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

fts_open(pathlist, ...);