Ir para conteúdo
Fórum Script Brasil

RootUser

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre RootUser

RootUser's Achievements

0

Reputação

  1. Muito obrigado pela ajuda p4t0X, o código está funcionando perfeitamente agora, só mudei a linha 40 para "if( closedir( dp ) == -1 )". #include<stdlib.h> #include<stdio.h> #include<sys/types.h> #include<dirent.h> #include<string.h> void get_files(char *dir, char ***content, int *i){ DIR *dp; struct dirent *ep; dp = opendir(dir); if( !dp ){ printf("Error!!!\n"); exit(-1); }else{ while( NULL != ( ep = readdir(dp) ) ){ //Realoca a memória existente adicionando +1 posição (*content) = (char **) realloc( (*content), (*i+1) * sizeof(char *) ); if( (*content) == NULL ){ printf( "Erro no realloc!" ); exit( -1 ); } //Aloca a quantidade necessária para o nome do arquivo atual (*content)[*i] = (char *) malloc( ( strlen( ep->d_name ) ) * sizeof(char) ); if( (*content)[*i] == NULL ){ printf( "No memory...\n" ); exit( -1 ); } //Copia a string strcpy((*content)[*i],ep->d_name); //Incrementa o número de arquivos *i = *i + 1; } if( closedir( dp ) == -1 ){ printf("Can't close the dir.\n"); } } } int main( int argc, char **argv ){ int i=0,j; char **files = (char **) malloc( sizeof( char *) ); get_files(".",&files,&i); for( j = 0; j < i; j++ ){ printf ("%s\n" , files[j] ); } return 0; } PS.: Código testado no Slackware 13.
  2. Obrigado pela resosta p4t0X, estou verificando todas as suas sugestões, mas não entedi a seguinte sugestão: Isso não faria com que o meu programa imprimisse a mensagem de erro "Can't close the dir. " ("Não é possivel fechar o diretório") quando o diretório fosse corretamente fechado? Eu fiz esse código baseado nesse, vou postá-lo abaixo no caso de ele ser utíl. #include <errno.h> #include <dirent.h> #include <stdio.h> #include <stdlib.h> int main() { DIR *pdir; struct dirent *pent; pdir=opendir("."); //"." refers to the current dir if (!pdir){ printf ("opendir() failure; terminating"); exit(1); } errno=0; while ((pent=readdir(pdir))){ printf("%s\n", pent->d_name); } if (errno){ printf ("readdir() failure; terminating"); exit(1); } closedir(pdir); } Em todo o caso obrigado pela ajuda p4t0X.
  3. Não sei o porque, mas este código não imprime o nome dos diretórios e arquivos, e também não fecha o diretório aberto... #include<stddef.h> #include<stdio.h> #include<sys/types.h> #include<dirent.h> void get_files(char *dir, char **content, int *i) { DIR *dp; struct dirent *ep; dp = opendir(dir); if(!dp) { printf("Error!!!\n"); exit(-1); } else { while(ep = readdir(dp)) { content = malloc((*i+1) * sizeof(char *)); content[*i] = calloc(strlen(ep->d_name),sizeof(char)); if(strcmp(ep->d_name,".") != 0 && strcmp(ep->d_name,"..")) { strcpy(content[*i],ep->d_name); strcat(content[*i],""); *i = *i + 1; } } if(!closedir(dp)) { printf("Can't close the dir.\n"); } } } int main() { int i=0,j; char **files; get_files(".",files,&i); for(j=0; j<i; j++) printf("%s\n", files[j]); return 0; } Alguém poderia me ajudar? Desde já agradeço. Ass.: RootUser
×
×
  • Criar Novo...