Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Guest ricpesilva

[Resolvido] C++

Recommended Posts

Guest ricpesilva

Olá galera que manja de C

Será que alguém pode me ajudar???

Preciso de uma função para gerar estatística de ultilização de area em disco por usuário. É urgente please.

[ ]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso depende muito do sistema operacional que você está usando, como ele controla os usuários; você teria que descobrir o local onde ficam os arquivos do usuário, e fazer uma contagem do tamanho do diretório.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guest ricpesilva
  • Autor do tópico
  • Ok cara mas você poderia me enviar um exemplo + ou - de como eu crio essa função??? Não sei nem como começar pois a lógica já entendi.

    [ ]´s

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Pois não...

    Veja o código em C:


    /*    dsize.c      
    (by Daniel K. O.)
    Mostra o tamanho de um diret¢rio
    Compilado no MinGW
    */

    #include <stdio.h>
    #include <stdlib.h>
    #include <io.h>
    #include <dir.h>
    #include <string.h>

    unsigned long DirSize(char *dir) {
        struct _finddata_t ff;  /* "ffblk" no compilador da Borland */
        char separador;
        unsigned long DirBytes = 0;
        char buff[FILENAME_MAX], buff2[FILENAME_MAX];
        int l, fh;

        separador = (dir[strlen(dir)-1]=='\\') ? '\0' : '\\';
        /* verifica se o último caracter é uma barra '\\'     */

        strcpy(buff, dir);
        l=strlen(buff);

        buff[l]=separador; /* coloca o separador ('\0' ou '\\')
                            * no final da string */
        buff[l+1]='\0';    /* e, obviamente, assegura que ela foi finalizada,
                            * com um '\0' */
        strcpy(buff2, buff);
        strcat(buff2, "*.*");

        if (!(fh=_findfirst(buff2, &ff)))
           if (ff.attrib!=_A_SUBDIR)  /* ff_attrib no Borland C */
              DirBytes+=ff.size;  /* ff_fsize no Borland C */
           else
             if (strcmp(ff.name, ".") && strcmp(ff.name, "..")) {
             /* ff_name no Borland C */
                strcpy(buff2, buff);
                strcat(buff2, ff.name);  
                DirBytes+=DirSize(buff2);
             }

        while (!_findnext(fh, &ff)) {  /* findnext() retorna 0 enquanto achar
                                         * algo no diret¢rio*/
              if (ff.attrib!=_A_SUBDIR)  
                 DirBytes+=ff.size;  
              else
                  if (strcmp(ff.name, ".") && strcmp(ff.name, "..")) {
                     strcpy(buff2, buff);
                     strcat(buff2, ff.name);
                     DirBytes+=DirSize(buff2);
                  }
        }
       
        _findclose(fh);  /* pode não ser necessário no Borland C */
        return DirBytes;
    }


    int main(int argc, char *argv[]) {

        if (argc!=2) {
           printf("Mostra o tamanho de um diretório\n");
           printf("Formato: dsize diretorio\n");
           exit(1);
        }

        printf ("%lu bytes\n", DirSize(argv[1]));

        return 0;
    }

    Fiz esse código prá compilar no MinGW, prá Windows. Não é padrão ANSI/ISO C, por isso tem diferenças entre os compiladores. Coloquei comentários nos pontos que apresentam divergências, então é melhor conferir o help do seu compilador (e os arquivos io.h e dir.h (dos.h também, se tiver)) para saber os nomes das funções e constantes. Lembrando que em sistemas *nix pode ser necessário mais alterações ainda.

    Se analisar a função DirSize, ela apenas faz uma análise recursiva para pegar cada arquivo do diretório e somar o seu tamanho ao tamanho total; quando ela achar algum subdiretório, ela chama a si própria novamente, passando como parâmetro o novo diretório encontrado; a função _findclose() pode ser desnecessária dependendo da implementação que você for usar (se ela não existir, é porque não precisa mesmo :P ).

    Até mais.

    PS:

    :)  :(  :D  :P  ;)  ???  :-0  :angry:  }:)  :-(P  d-:  :Zz  :69  :??????'>  (:-D  :((  :**  :Z  :!!!  8D  :::)  :C  :))))  :-?)  #-()  $-)  88-)  ;-|  B-)  :-/  9-N  !-)  :-09  :-Baaa  :-V

    Hm... quantos desses emoticons tão realmente funcionando??

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Guest ricpesilva
  • Autor do tópico
  • Valeu a força. Já me deu uma grande força. Estou indo bem estou fazendo algumas implementações e ajustes ainda na função qualquer problema eu retorno c/ mais algumas dúvidas.

    [ ]´s

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Visitante
    Este tópico está impedido de receber novos posts.
    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×