Grundsätzlich bisher habe ich diesen Code:Liste Dateien in Verzeichnissen Glob mit() in C
#include <glob.h>
#include <string.h>
#include <stdio.h>
# define ERROR 1
# define FAILURE -1
int main(int ac, char **av)
{
glob_t globlist;
int i;
i = 0;
if (ac == 1)
return (-1);
else
{
if (glob(av[1], GLOB_PERIOD, NULL, &globlist) == GLOB_NOSPACE
|| glob(av[1], GLOB_PERIOD, NULL, &globlist) == GLOB_NOMATCH)
return (FAILURE);
if (glob(av[1], GLOB_PERIOD, NULL, &globlist) == GLOB_ABORTED)
return (ERROR);
while (globlist.gl_pathv[i])
{
printf("%s\n", globlist.gl_pathv[i]);
i++;
}
}
return (0);
}
Wenn ich ./a.out "*"
zum Beispiel gebe sie all meine Dateien drucken, wo ich bin, aswell als Verzeichnisse, aber es druckt nicht, was in Verzeichnissen ist. Wie soll ich ALLE Dateien einschließlich Unterdateien/Ordner drucken?
Dank
Völlig unabhängig von Ihrem Problem, aber Sie sollten '-1' nicht aus der' main' Funktion zurückgeben. Geben Sie "0" bei "Erfolg" und einen * positiven * Wert von weniger als 256 bei "Fehler" zurück. Dies liegt daran, dass auf POSIX-Systemen (einschließlich Linux, OSX und allen modernen Unix-Systemen) die höheren Bits eine besondere Bedeutung haben. –
Vielleicht möchten Sie sich die Funktionen prototyped in 'dirent.h' anschauen. – alk
@alk Ich weiß über dirent.h aber ich weiß nicht wirklich, wie man es gut verwendet. Wie ich denke, ich muss rekursiv machen, liege ich falsch? – iNukeLaPeste