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: 724 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#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 |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





