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
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:\
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
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
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 ^^
by hacker fts315
- 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