Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

norderzon

listar subdirectorios especificos

Recommended Posts

oi

tou com um problema, preciso listar o conteudo de uma directoria, o conteudo dessa directoria tem vários ficheiros e subdirectorias

 

eu consigo listar sem problema o conteudo da directoria, mas agora preciso listar o conteudo de algumas subdirectorias especificas da primeira.

Não tou a conseguir fazer

 

O meu codigo é qualquer coisa como isto

 

DIR* directorio; 
DIR* sub_dir;
struct dirent* item_directorio;
struct dirent* sub_item;

directorio = opendir("/home/user/Desktop/directoria");
if(!directorio)
{
   perror("opendir");
   return(-1);
}

item_directorio = readdir(directorio);
while(item_directorio)
{
   printf("\n#-------------------------------");
   printf("\nPID: %s",item_directorio->d_name);
   item_directorio = readdir(directorio);
  
/* esta parte é para listar o conteudo das subdirectorias */
 
   sub_dir = opendir(item_directorio->d_name);
   if(!sub_dir)
   {
	 printf("\nError\n");
   }
   else
   {
	 sub_item = readdir(sub_dir);
	 while(sub_item)
	 {
	printf("\nSub item: %s",sub_item->d_name);
	 }
   }
}
closedir(directorio);

o resultado com a parte das subdirectorias não dá erro mas o resultado não é o pretendido

agradeço qq ajuda

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi, obrigado pela resposta

fiz uma pesquisa dessa função e não encontrei nenhum exemplo que conseguisse perceber bem e adaptar para o meu codigo

 

é possivel me dar um exemplo de aplicação dessa função?

 

desculpa a ignorancia

como eu descubro se suporta o POSIX.1-2001

 

Obrigadao

Compartilhar este post


Link para o post
Compartilhar em outros sites

int adicionaNome(const char *fpath, const struct stat *sb, int tflag) {

if (S_ISREG(sb->st_mode)) {

	lista = (char**) realloc(lista,sizeof(char*)*(arquivosExistentes+1));
	lista[arquivosExistentes] = (char*)malloc((strlen(fpath)+1)*sizeof(char));
	strcpy(lista[arquivosExistentes],fpath);
	arquivosExistentes++;
}
return 0;
}

 

 

// Criar lista dos arquivos.
lista = (char**)malloc(0);
ftw(argv[argc-1], &adicionaNome,20);

 

 

Linux com certeza tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.