seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^

Participe do fórum, é rápido e fácil

seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

[tutorial] listar arquivos e diretorios (dirent.h)

Ir para baixo  Mensagem [Página 1 de 1]

Kodo no Kami

Kodo no Kami
master
master

bom galera nesse tutorial vou ensinar como listar os arquivos e diretorios de duas maneiras uma pelo system e outra pela funçao opendir, a funçao system permite usar comandos do terminal no windows o comando dir lista os arquivos e diretorios ja no linux tem o ls, para agente usar o system tem q declarar stdlib.h

Código:
#include <stdlib.h>

int main(void)
{
    system("dir");
}

para fazer isso pelo opendir agente tem q declarar dirent.h, depois criar uma variavel do tipo DIR para receber o diretorio, depois usamos a funçao opendir() e passamos como argumento o diretorio q agente vai abrir no meu caso e unidade c:\

Código:
#include <dirent.h>

int main(void)
{
    DIR *fts = opendir("c:\\");
}

com o diretorio aberto agente cria uma estrutra do tipo dirent, depois em um laço while agente usa a funçao readdir e passa como argumento a variavel DIR e atribuimois essa funçao a estrutura dirent

Código:
#include <dirent.h>

int main(void)
{
    DIR *fts = opendir("c:\\");
    struct dirent *hack;
    while(hack = readdir(fts))
    {
    }
}

agora so agente ler o attribute d_name da estrutura q e um tipo string, e dpois fechar o diretorio com o close dir e passando como arguemnto o ponteiro dir

Código:
#include <stdio.h>
#include <dirent.h>

int main(void)
{
    DIR *fts = opendir("c:\\");
    struct dirent *hack;
    while(hack = readdir(fts))
    {
        printf("%s \n",hack->d_name);
    }
    closedir(fts);
}

para diferenciar oq e arquivo diretorio e unidade agente usa a funçao GetFileAttributes() e passamos como arguemento o arquivo, essa funçao retorna o codigo do atributo do arquivo o no caso se for diretorio ele vai retornar 16, arquivo normal 32 e unidade 64 (nao tenho certeza se e 64 mesmo, e existe outros como arquivo do sistema arquivos ocultos etc), so lembrando para funcionar tem q declarar a windows.h e tambem tem q ter o endereço do arquivo todo, segue um exemplo mais complexo ^^

Código:
//by hacker fts315

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

int main(void)
{
    char local_nome[800];
    char local[300];
    printf("digite a pasta: ");
    gets(local);

    DIR *fts = opendir(local);
    struct dirent *hack;

    while(hack = readdir(fts))
    {
        strcpy(local_nome,"");
        strcat(local_nome,local);
        strcat(local_nome,"\\");
        strcat(local_nome,hack->d_name);

        printf("%s ",hack->d_name);
        if(GetFileAttributes(local_nome) == 16)
        {
            printf("<DIR>");
        }
        printf("\n");
    }

    closedir(fts);
}

by hacker fts315

https://endoffile.umforum.net

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos