Você está aqui: C ::: Dicas & Truques ::: Arquivos e Diretórios |
Como listar os arquivos e sub-diretórios em um diretório em C usando uma função recursivaQuantidade de visualizações: 524 vezes |
Nesta dica mostrarei como podemos listar todos os arquivos em um diretório usando a linguagem C. No entanto, se algum destes arquivos for um diretório, nós vamos entrar nesse diretório e listar o seu conteúdo também. Para isso nós vamos usar uma função recursiva chamada listar_arquivos_recursiva(). Veja o código completo para o exemplo: #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <dirent.h> // protótipo da função recursiva que lista todos os arquivos // em um diretório void listar_arquivos_recursiva(const char *caminho_base); // função principal do programa int main(int argc, char *argv[]){ // caminho e nome do diretório char caminho_diretorio[100]; setlocale(LC_ALL,""); // para acentos do português // vamos pedir para o usuário informar o caminho e // nome do diretório printf("Informe o caminho do diretório: "); scanf("%s", caminho_diretorio); // agora chamamos a função recursiva que lista todos os // arquivos e diretórios dentro do diretório especificado listar_arquivos_recursiva(caminho_diretorio); printf("\n\n"); system("PAUSE"); return 0; } // função que lista todos os arquivos em um diretório void listar_arquivos_recursiva(const char *caminho_base){ // criamos uma estrutura do tipo dirent, // definida no header dirent.h struct dirent *entrada; // abrimos o diretório especificado DIR *diretorio = opendir(caminho_base); // para registrar os novos caminhos char caminho[1000]; // é um diretório válido? if(!diretorio){ return; } else{ // vamos abrir o diretório while ((entrada = readdir(diretorio)) != NULL){ if (strcmp(entrada->d_name, ".") != 0 && strcmp(entrada->d_name, "..") != 0){ printf("%s\n", entrada->d_name); // vamos construir o caminho para listar o sub-diretório strcpy(caminho, caminho_base); strcat(caminho, "/"); strcat(caminho, entrada->d_name); // chama a função recursiva novamente listar_arquivos_recursiva(caminho); } } // e fechamos o diretório closedir(diretorio); } } Ao executar este código C nós teremos o seguinte resultado: Informe o caminho do diretório: C:\estudos_csharp exemplo_pedido_vetores ExemploPedidoVetores .vs ExemploPedidoVetores v16 .suo bin Debug netcoreapp3.1 ExemploPedidoVetores.deps.json ExemploPedidoVetores.dll ExemploPedidoVetores.exe ExemploPedidoVetores.pdb ExemploPedidoVetores.runtimeconfig.dev.json ExemploPedidoVetores.runtimeconfig.json ExemploPedidoVetores ExemploPedidoVetores.csproj ExemploPedidoVetores.sln obj Debug |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |