IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Taille d'un fichier par la fonction ftell


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut Taille d'un fichier par la fonction ftell
    Bonjour à tous,
    voilà, je voudais lire la taille d'un fichier, donc je fais la chose suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    FILE *file;
    long size;
     
    file = fopen (NomFichier, "r");
    if (file == NULL)
    {
       printf ("Error\n");
    }
    else
    {
       fseek(file, 0, SEEK_END);
       size = ftell(file);
       fclose(file);
    }
    Donc ce bout de code fonctionne pas de problème.
    Mais voila je me pose une question sur la fonction ftell(), supposons que le fichier soit très gros, la variable "size" ne sera pas assez grande alors comment faire ?

    Merci

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 937
    Points : 7 345
    Points
    7 345
    Par défaut
    Bonjour,

    Pouvez-vous mettre le code correctement dans les balises prévues à cet effet, bouton #

    Dans votre code le main() n'est même pas indiqué, c'est si fatiguant que ça de donner un code respectant les règles du langage?

    Vous pouvez en outre suivre ce lien très intéressant et donnant réponse à votre question.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    Le morceau de code que j'ai donné et une parti. L'essentiel de la question est à propos de la fonction ftell() et de savoir comment ça fonctionne lorsque la taille d'un fichier est supérieur à un long.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    Merci pour le lien

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    ceci dit, je vais m'auto-répondre, la solution est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    unsigned long long  n;
    n = 0;
    while(fgetc(file)!=EOF)
    {
       n++;
    }

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    c'est une solution extremement lente.
    Il existe, au moins sous unix, une fonction très simple nommée stat, qui donne cette information.
    Il vaut toutefois mieux utiliser stat64 qui gère les fichiers de plus de deux gigas.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    Effectivement, ça semble mieux, donc voici mon code si ça peut aider quelqu'un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct stat s_stFile; 
     
    fstat(fileno(file), &s_stFile);
    size = s_stFile.st_size;
    printf("size file = %lld\n", size);

Discussions similaires

  1. Trier des fichiers par taille par le VB
    Par tedparker dans le forum Access
    Réponses: 2
    Dernier message: 23/08/2006, 12h59
  2. Ouverture d'un fichier par une fonction.
    Par Pragmateek dans le forum GTK+ avec C & C++
    Réponses: 17
    Dernier message: 26/06/2006, 12h29
  3. Savoir la taille d'un fichier pointé par une URL
    Par jeje99 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 15/11/2005, 19h35
  4. fonction réduisant la taille d'un fichier
    Par Harry_polin dans le forum C
    Réponses: 22
    Dernier message: 27/11/2003, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo