2012-03-28 10 views

Antwort

3

Ich nehme an, Sie möchten wissen, wie Sie diesen einzelnen Pfad an den argv (Typ char const **) Parameter von fts_open übergeben können. Dieser Parameter wird so beschrieben:

argv

ist ein NULL-terminierten Array von Zeichenzeiger Namensgebung einen oder mehrere Pfade, die die Dateihierarchie bilden.

Sie müssen also ein Array der Länge zwei erstellen, dessen Elemente vom Typ char* sind. Setzen Sie Ihren Pfad in das erste Element und setzen Sie NULL in das zweite Element. Wie folgt aus:

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

können Sie jetzt argv-fts_open passieren.

+2

Dennoch, fts_open akzeptiert nur 'char * const *' anstelle von 'const char * const *': -/ –

+0

Sie können nicht-const-Zeiger an eine Funktion übergeben, die const-Zeiger akzeptiert. In const-Korrektheit weist die Funktionssignatur darauf hin, dass die Funktion die Daten, auf die das Argument verweist, nicht ändert. In diesem Fall ändert 'fts_open' nicht den Inhalt von' argv' oder die Werte, auf die seine Elemente zeigen. – tomlogic

+0

Aber ich war ein bisschen schlampig in meiner ursprünglichen Version. Ich habe jetzt die passenden 'const' Qualifier hinzugefügt. Das heißt, ich vermute, dass das Vorhandensein von "const" es für Helium3 nur erschwert, die doppelte Indirektion zu verstehen. Aus Gründen der Darstellung kann es manchmal besser sein, sich auf ein Thema zu konzentrieren. –

0

Das erste Argument zu fts_open() ist, "ein NULL terminiertes Array von Zeichenzeigern, die einen oder mehrere Pfade benennen, aus denen die Dateihierarchie besteht."

So könnte man es so passieren:

char *pathlist[2]; 

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

fts_open(pathlist, ...); 
Verwandte Themen