Я написал программу, которая читает каталоги. Он читается только до уровня 2 данного каталога.Чтение каталогов
void
readDir (char *pth)
{
char path[1000];
strcpy (path, pth);
DIR *dp;
DIR *dp2;
struct dirent *files;
struct dirent *files2;
if ((dp = opendir (path)) == NULL)
perror ("dir\n");
char newp[1000];
struct stat buf;
while ((files = readdir (dp)) != NULL)
{
if ((strcmp (files->d_name, ".") && strcmp (files->d_name, "..")))
{
strcpy (newp, path);
strcat (newp, "/");
strcat (newp, files->d_name);
printf ("%s\n", newp);
if ((dp2 = opendir (newp)) == NULL)
perror ("dir\n");
while ((files2 = readdir (dp2)) != NULL)
{
printf ("%s\n", files2->d_name);
if ((strcmp (files2->d_name, ".")
&& strcmp (files2->d_name, "..")))
{
strcat (newp, "/");
strcat (newp, files2->d_name);
//printf("%s\n",newp);
CheckOutput (newp);
}
}
}
}
}
Пример directoreis расположения: (В каждой из каталога пользователей есть один текстовый файл.)
Head -> user1 -> a.txt
-> user2 -> b.txt
-> user3 -> c.txt
Он работал отлично один раз, а потом что-то странное произошло: я скопировал текстовый файл наклеен, и удалили и напечатали некоторые странные справочники, например:
/home/Desktop/Head/user/a.txt~
/home/Desktop/Head/user/a.txt~/b.txt~
И я понятия не имею, почему. Может ли кто-нибудь мне помочь?
Вы проверили содержимое каталогов? –
hhh, да ... много раз – frdfg
Я не могу воспроизвести вашу проблему, у вас есть еще один, но вы не называете 'closedir' на' dp' и 'dp2', вы должны называть его' dp' в конце внешнего цикла while и для 'dp2' в конце внутреннего цикла while. –