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 :

Projet récalcitrant "recherche de mot"


Sujet :

C

  1. #21
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 119
    Points : 39
    Points
    39
    Par défaut
    Re-bonjour!

    Je relisais le TP d'un copain, et je suis tombé la dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void aff(int* tab,unsigned int size){
      int i=0;
      while(i++<size)
        printf("[%d] ",*tab++);
      printf ("\n");
      fflush(stdout);
    }
    Bon, c'est apparemment une fonction qui donne une représentation d'un tableau d'entiers sur la partie standard... Mais je ne comprends pas l'intéret de cette fonction "fflush(stdout);" même en lisant la doc....
    Si une âme charitable peut m'en expliquer l'utilité...

  2. #22
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Tu as lu ceci ?
    F.A.Q. C: A quoi sert la fonction fflush ?

    Personnellement, je m'en sers très rarement pour la sortie standard.
    Mais pour les fichiers, ça peut être très important si tu veux être sûr que des données sont effectivement écrites.
    Par contre, il ne faut pas en abuser.

  3. #23
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Par exemple, imagine que tu écrives dans un fichier, mais le programme plante en plein milieu.
    Il y a de fortes chances qu'une partie des données soient restées dans le tampon, et n'aient finalement pas été enregistrées dans le fichier (sur le disque).
    Si tu as appelé fflush de temps en temps, tu es sûr que toutes les données écrites entre l'ouverture du fichier et le dernier fflush sont bien dans le fichier à la fin (même si le programme plante).

    Un autre cas, si tu fais un fichier de log, par exemple, et que tu veux le consulter en cours d'exécution.
    Si tu attends que le tampon soit plein ou la fin du fichier pour écrire réellement les données sur le disque, tu ne pourras pas consulter le log, sauf une fois le programme terminé.
    En revanche, si tu mets des fflush de temps en temps, le log sera mis à jour par étapes.

    Un autre cas d'utilisation possible, des accès concurrents au même fichier (par des threads/processus différents, par exemple).
    Si ces différents accès n'utilisent pas le même tampon, tu te rends bien compte qu'il peut y avoir des soucis...

    Sinon, fflush est automatiquement appelée à la fermeture du fichier (fclose), donc à ce niveau-là on n'a pas à s'en occuper.

    Si tu ne veux pas t'embêter avec ça, tu peux décider de ne pas utiliser de tampon (voir setbuf et apparentées).
    Ainsi, les données seront directement écrites sur le disque.
    Mais il faut être conscient qu'il y a des conséquences.
    Je n'ai malheureusement pas assez de connaissances pour les expliquer clairement.
    Ceci dit, retiens que c'est mieux de limiter les opérations de lecture/écriture sur le disque autant que possible.

Discussions similaires

  1. Rechercher enregistrement avec ' (quote)
    Par jpo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/08/2007, 17h54

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