Zdravim,
potreboval by som napisat funkciu ktora dostane ako parameter cestu k adresaru a potom tento adresar prehlada do hlbky. Vypise nazvy suborov a podadresarov a tiez sa vnori do podadresara a pokracuje az dokym neprehlada cely adresarovy strom. Nakodil som nieco nasledovne :
#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
void adrr(char *);
int main(void)
{
adrr("/");
return 0;
}
void adrr(char * retazec)
{
DIR * adr = opendir(retazec);
if (adr == NULL)
{
printf("Chyba\n");
//return 1;
}
struct dirent * xx ;
struct stat test;
xx = readdir(adr);
while (xx != NULL)
{
xx = readdir(adr);
int controll = 1;
if (xx == NULL)
break;
if(strstr(xx->d_name, ".."))
{
controll = 0;
}
//printf("%s", xx->d_name);
char * pt = malloc((sizeof(char) * strlen(xx->d_name)) + 2);
strcpy(pt, retazec);
strcat(pt, xx->d_name);
printf("%s", pt);
if (!(stat(pt, &test)) && (controll))
{
if (S_ISDIR(test.st_mode))
{
printf("\t-adresar\n");
adrr(pt);
}
else
printf("\n");
}
else
printf("Chyba\n");
free(pt);
}
}
Nanestastie mi to padne pri behu programu. Niesom si isty ci som osetril spravne aby to nevychadzalo z adresara do jeho nadradeneho. Nejake napady kde som spravil chybu ?
Dakujem za pripadnu pomoc.