мой код не работает. Мне нужно отобразить все каталоги внутри каталога, заданного в качестве аргумента командной строки. До сих пор я попытался это:Как рекурсивно перечислить все каталоги?
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
struct stat my_stat;
int searchDirectory (char *dirName);
int searchDirectory(char *dirName){
struct dirent *pDirent;
DIR *pDir;
pDir = opendir(dirName);
if (pDir == NULL) {
printf("Cannot open directory '%s'\n", dirName);
return 1;
}
while ((pDirent = readdir(pDir)) != NULL){
printf("%s\n", pDirent->d_name);
stat(pDirent->d_name, &my_stat);
if (S_ISDIR(my_stat.st_mode)){
searchDirectory(pDirent->d_name);
printf("Directory Found: %s\n", pDirent->d_name);
}
}
return 0;
}
int main(int argc, char *argv[]){
struct stat my_stat;
if (lstat(argv[1], &my_stat) < 0){
perror("stat error");
}
if (S_ISDIR(my_stat.st_mode)){
printf("Directory found\n");
searchDirectory(argv[1]);
}
return 0;
}
Я не уверен, почему, но по какой-то причине мой код читает обычные файлы в каталоге, но S_ISDIR (my_stat.st_mode)) должны предотвратить это. Любая идея о том, что может быть неправильным?
И каков ваш выход? Вы даже выполнили основную отладку printf? –
Это дублированный вопрос - сложность, как всегда, заключается в том, чтобы найти вопрос о том, что это дубликат. –
@JonathanLeffler no problemo: Googling точный заголовок дает: «Около 511 000 результатов», с SO Q & A на первой странице. –