Programa para Listar Arquivos em um Diretório

CBeginner
Pratique Agora

Introdução

Neste laboratório, criaremos um programa C para listar todos os arquivos presentes em um diretório usando o arquivo de cabeçalho dirent.h.

Nota: Você precisa criar o arquivo ~/project/main.c por conta própria para praticar a codificação e aprender como compilar e executá-lo usando o gcc.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

Incluir Arquivos de Cabeçalho

Precisamos incluir os arquivos de cabeçalho de entrada/saída padrão e dirent escrevendo o seguinte código no início do programa:

#include <stdio.h>
#include <dirent.h>

Definir Função Principal (Main)

A função main() é o ponto de entrada do nosso programa. Nosso programa começa a ser executado a partir daqui. Também declararemos o ponteiro de diretório d do tipo DIR e o ponteiro de entrada de diretório dir do tipo struct dirent.

int main(void)
{
    DIR *d;
    struct dirent *dir;
    /*Your code goes here*/
    return 0;
}

Abrir o Diretório

Abriremos o diretório requerido usando a função opendir(). Aqui, o operador ponto (.) indica o diretório atual.

d = opendir(".");

Ler o Diretório

Leremos cada entrada do diretório usando a função readdir(). Aqui, verificamos se o ponteiro do diretório não é NULL. Se não for NULL, imprimiremos todos os arquivos presentes no diretório.

if (d)
{
    while ((dir = readdir(d)) != NULL)
    {
        printf("%s\n", dir->d_name);
    }
    closedir(d);
}

Código Completo

Aqui está o código completo do programa:

#include<stdio.h>
#include<dirent.h>

int main(void)
{
    DIR *d;
    struct dirent *dir;
    d = opendir(".");
    if (d)
    {
        while ((dir = readdir(d)) != NULL)
        {
            printf("%s\n", dir->d_name);
        }
        closedir(d);
    }
    return(0);
}

Resumo

Neste laboratório, aprendemos como criar um programa C para listar os nomes de todos os arquivos em um diretório. Usamos funções do arquivo de cabeçalho dirent.h para conseguir isso. Ao usar este programa, podemos facilmente recuperar os nomes de todos os arquivos presentes no diretório especificado.