2012-03-28 78 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, ...);