Итак, я пытаюсь обработать список каталогов и файлов внутри них. Моя программа отлично работает до сих пор, за исключением случая, когда в пределах данной директории существует более чем 1 подкаталог. Я абсолютно не могу понять, почему это происходит.Обработка рекурсивных подкаталогов в C
Ниже приведены соответствующие фрагменты кода, который я использую. Любая помощь будет принята с благодарностью.
int i=0;
int subcount=0;
char temp[256];
struct dirent *directory;
DIR *pdirectory;
struct stat fileinfo;
chdir(path);
pdirectory=opendir(path);
if (pdirectory==NULL)
{
perror(path);
exit(EXIT_FAILURE);
}
printf("%s\n",path);
while ((directory=readdir(pdirectory)) != NULL)
{
if (!stat(directory->d_name,&fileinfo))
{
if(!strcmp(directory->d_name,"."))
continue;
if(!strcmp(directory->d_name,".."))
continue;
if (S_ISDIR(fileinfo.st_mode) && (!S_ISREG(fileinfo.st_mode)))
{
(char*)directory->d_name;
strcpy(temp,directory->d_name);
printf("Dir Name: %s\n",temp);
subcount=subcount+1;
printf("Sub Count: %d\n",subcount);
for (i=0; i < subcount; i++)
{
strcat(path,"/");
strcat(path,temp);
processDir(path); //Recursive Call to Function
}
closedir(pdirectory);
}
* Он не работает * не очень описателен. что именно происходит? –
Итак, у меня есть родительская папка с 1 подкаталогом с именем Test. Внутри теста есть 2 подкаталога с именем Test 1 и Test2. Моя программа обрабатывает все файлы в родительской папке, в тесте Test и внутри Test2, но по какой-то причине, похоже, пропускает Test1. – user3394907
Обычно вы получите ответы на вопросы о неработающих, если вы опубликуете SCCE: автономный компилируемый пример. В этом случае извлеките код хостинга каталога. – Gene