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 :

afficher un enregistrement d'un fichier en c++


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 36
    Points : 19
    Points
    19
    Par défaut afficher un enregistrement d'un fichier en c++
    Bonjour,
    Je travaille en c++ et j'arrive à enregistrer dans mon fichier mes documents.
    Dans un enregistrement j'ai numero,auteur,titre...
    Je veux qu'en entrant un numero je puisse afficher toutes les informations du document (numero,titre,auteur...).
    Je dois parcourir mon fichier en recherchant le numero et si le numero est trouvé on affiche toutes les informations du document dont le numero a été saisi.

    Merci de m'aider!

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    c'est pas très clair tout ça, pourrais-tu être un peu plus explicite?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut, et bienvenue sur le forum.

    De manière générale (donc, forcément incomplète et sujette à des raccourcis peu scrupuleux), il faut déjà te dire qu'un fichier ne sert, en définitive, qu'à une seule chose: te permettre de retrouver des informations, après l'arrêt d'une application, lorsqu'elle est relancée, ou lorsque l'on redémarre l'ordinateur.

    C'est à dire que, le plus souvent, il est "opportun" de charger le contenu d'un fichier en mémorie au début de l'application, de manipuler le contenu de la mémoire en cours d'application, et de sauvegarder (si besoin est) les informations en fin d'application, de manière à pouvoir les récupérer la prochaine fois que nous lancerons l'application.

    Bien sûr, il y a bien des cas dans lesquels nous pouvons décider soit de travailler directement sur un fichier, soit de ne charger "qu'une partie des informations" à un moment donné, mais, en commençant, autant s'éviter les affres de ces situations "particulières"

    Il faut savoir que, si tu ne veux pas devoir reprendre la lecture de ton fichier depuis le début chaque fois que tu cherche un document particulier, tu es obligé soit de "limiter" la taille de l'information correspondant à tous les documents de manière "arbitraire", soit, de créer un second fichier qui te permettra de retrouver "rapidement" la position à laquelle une information commence dans le fichier.

    Ce système est souvent évoqué sous le nom de "ISAM" (Indexed Sequential Access Method)

    La première solution est - certes - tentante, mais elle présente deux limites "embêtantes":
    Si tu prévois 50 caractères (représentatifs) pour une information précise et qu'un document n'en nécessiter que 3 ou 4, ca fait autant de caractères "perdus pour rien"...

    En soi, ce n'est peut être pas grave pour un document, mais, multiplié par... dieu seul sait combien de documents sont dans le cas... ca peut représenter une perte de place énorme.

    La deuxième limite est le pendant inverse de la première: si tu prévois 20 caractères (représentatifs), ce sera peut être assez, mais, il suffit qu'une information doive contenir 21 caractères (représentatifs) pour faire se "casser lamentablement" la figure de tout le système

    Et comme, au contraire de son ancêtre le C, le C++ favorise énormément l'utilisation de collections d'objets dont la taille n'est pas définie à l'avance (car, c'est vrai non seulement pour les chaines de caractères, mais aussi pour toutes les structures "classiques" de tableau, de pile, de file, de liste chainées et de tableaux binaires), ce genre de limitation devient rapidement... très douloureux à supporter en C++

    La deuxième solution subit moins ce genre de restriction, parce qu'elle consiste à décider de noter, dans un autre fichier, la position dans le fichier de données du début de certaines informations, par exemple (là aussi, c'est une valeur choisie arbitrairement, la position d'une information sur 10).

    Nous pouvons alors décider à tout moment d'ouvrir le fichier, de "sauter" à la position de la nième informaiton qui soit inférieur au numéro de la position effectivement recherchée mais multiple de 10, puis de parcourir, au final, maximum 9 informations (selon l'exemple) pour être sûr de trouver celle qui nous intéresse.

    Seulement, ce que l'on gagne d'un coté, on le perd systématiquement de l'autre (bien que ce soit parfois dans une moindre mesure)...

    En effet, si nous ne sommes plus tenus de charger l'ensemble des informations, nous devons charger en mémoire... l'ensemble des indexes...

    Et cela complexifie malgré tout fort la récupération de l'information qui nous intéresse...

    Maintenant que je t'ai expliqué toute la difficulté à gérer les informations directement au départ d'un fichier, je rejoins tout à fait r0d dans le fait que tes explications ne sont pas claires...

    Le principe d'un forum est généralement "aide nous à t'aider": plus tu arriveras à nous donner des informations précises sur ce que tu veux faire et/ou sur le problème que tu n'arrive pas à résoudre, plus nous serons en mesure de t'aider efficacement

    Mais n'oublie pas non plus que nous ne sommes en aucun cas taillables et corvéables à merci, ni que le but d'un forum n'est pas de tout faire faire "par les autres" (ce qui ne t'apprendrait rien)...

    La première chose à faire, c'est de produire son effort personnel, et, si possible, de fournir sur le forum un code minimum qui soit compilable et qui reproduise le problème auquel tu es confronté
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/08/2011, 08h25
  2. Réponses: 0
    Dernier message: 25/07/2010, 17h22
  3. Réponses: 1
    Dernier message: 14/10/2008, 09h34
  4. lire et afficher les enregistrements d'un fichier texte mod random
    Par intruder dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/08/2007, 00h06
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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