Kodum çalışmıyor. Komut satırı argümanı olarak verilen dizindeki tüm dizinleri görüntülemem gerekiyor.Tüm dizinleri yinelemeli olarak nasıl listeleyebilirim?
#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;
}
nedense benim kod bir dizin gibi normal dosyaları okuma neden ama emin değilim, ama S_ISDIR (my_stat.st_mode)) Bunu önlemek olmalıdır: Şimdiye kadar bu çalıştılar. Neyin yanlış olabileceği hakkında bir fikrin var mı?
Ve sizin çıktınız nedir? Temel printf hata ayıklama işlemini yaptınız mı? –
Bu yinelenen bir sorudur - zorluk, her zaman olduğu gibi, bir kopyası olduğu sorusunu bulmaktır. –
@JonathanLeffler no problemo: Tam başlığın aranması: 'Yaklaşık 511.000 sonuç', ilk sayfada SO Q & A ile. –