Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, et autres ressources pour la rubrique C.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/08/2009, 15h09   #1
ashley
Invité régulier
 
Inscription : juin 2009
Messages : 58
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 58
Points : 7
Points : 7
Par défaut Connaître la taille d'un dossier et les fichiers dedans

bonjour à tous,
voici le code source pour connaître la taille d'un dossier :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
#include <dirent.h>
#include <conio.h>
#include <stdlib.h>
#include<string.h>
#include<process.h>
#include<unistd.h>
#include<windows.h>
 
 
 
int main(void)
{
    int i=0,ret=0;
    long  s=0,t,ptr;
    char chaine2[]="ediin/";
    char chaine1[50];
    FILE* f;
    DIR * rep = opendir(chaine2);
 
 
    if (rep != NULL)
    {
        struct dirent * ent;
 
        while ((ent = readdir(rep)) != NULL)
        {
            if(strlen(ent->d_name)>3)//pour ignorer les fichiers cachés telque . et ..
 
            {
 
            strcpy(chaine1,chaine2);
            strcat(chaine1, ent->d_name);
 
            f = fopen(chaine1, "rb");
 
            if (f != NULL)
                         {
                         fseek(f, 0, SEEK_END); /* aller a la fin du fichier */
                         t = ftell(f); /* lire l'offset de la position courante par rapport au debut du fichier */
                         fclose(f);
                         f=NULL;
 
                         }
            else printf("\n\n\t\t erreur d'ouverture de fichier %s \n\n ",ent->d_name);;
 
             printf("la taille de fichier %s est %ld octets\n\n ",ent->d_name,t);
             s+=t;
             i++;
              }
 
        }
 
        closedir(rep);
    }
 
    printf(" le dossier contient %d fichier sa taille totale est %ld ",i,s);
 
 
 
     getch();
 
}
je souhaite que vous serez interessez.
ashley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2009, 16h43   #2
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 396
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 396
Points : 32 049
Points : 32 049
Envoyer un message via MSN à Médinoc
Il manque la balise CODE et ceci ne marche que sous MinGW...
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2009, 17h10   #3
ashley
Invité régulier
 
Inscription : juin 2009
Messages : 58
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 58
Points : 7
Points : 7
ça marche pour moi et s'il y existe des erreurs, vaut mieux les corriger et merci
ashley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2009, 11h46   #4
Melem
Rédacteur/Modérateur
 
Avatar de Melem
 
Homme Jessee Michaël Christian Edouard
Ingénieur développement logiciels
Inscription : janvier 2006
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jessee Michaël Christian Edouard
Âge : 27
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : janvier 2006
Messages : 3 661
Points : 8 435
Points : 8 435
Envoyer un message via MSN à Melem
Ca marche pour toi parce que justement tu utilises MinGW. Il n'y a pas vraiment d'erreurs (honnêtement, je n'ai pas regardé le code donc je ne sais pas) mais dirent.h et unistd.h, ce sont des headers qui ne sont disponibles, sous Windows, qu'avec MinGW. T'as deux solutions :

- Faire du code POSIX (c'est-à-dire du code destiné aux systèmes qui respectent cette norme (donc en pratique : pas pour Windows)). Dans ce cas, tu ne dois garder que stdio.h (standard), string.h (standard) et dirent.h (POSIX). Tu peux aussi garder stdlib.h (standard) et unistd.h (POSIX) mais d'après ce que j'ai pu lire, tu n'en as même pas besoin.

- Faire du code Windows. Dans ce cas tu ne dois garder que stdio.h, string.h, windows.h (Windows) et aussi conio.h (DOS et Windows) si tu veux vraiment garder le getch() (d'ailleurs le nom "getch" est obsolète, utilise plutôt "_getch"). process.h (DOS et Windows) ici est inutile.
Melem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h55.


 
 
 
 
Partenaires

Hébergement Web