Partage
  • Partager sur Facebook
  • Partager sur Twitter

placement dans un fichier en c++

Sujet résolu
    21 août 2007 à 17:32:50

    Bonjour, j'ai lu le tuto de Xav57 sur les différentes méthodes de lecture écriture des fichiers en c++ et je ne comprends pas la partie sur le positionnement dans le fichier.
    Il parle d'octets alors qu'il n'en parle pas dans le reste du tuto...
    Par exemple : comment faire pour me placer à la ligne 5 dans un fichier dont chaque ligne comporte un nom de joueur ?
    Merci de m'expliquer, il doit y avoir quelque chose que je n'ai pas compris...
    A bientôt !
    • Partager sur Facebook
    • Partager sur Twitter
      21 août 2007 à 17:47:00

      Il y a 2 façons de voir un fichier.
      - comme un fichier texte
      - comme un fichier binaire : une suite d'octets.

      Il est a noter que meme un fichier texte est un fichier dit "binaire", c'est a dire une suite d'octets.
      pour se déplacer dans un fichier, il faut donc savoir de combien d'octets se déplacer.
      Un fichier texte : c'est 1 octet par lettre, et 1 (ou 2) octets pour le retour chariot.

      Donc si tu veux te mettre sur la ligne 3, il faut se déplacer jusqu'a avoir passé 2 retour chariots :)
      Tu ne trouveras pas de fseek "intelligents" qui iront te placer tout seul sur la ligne que tu veux.

      Une méthode pratique : fait des fgets pour lire les lignes les unes apres les autres, stocke les en mémoire, ou alors fait N fgets pour aller a la ligne N.
      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

      Anonyme
        21 août 2007 à 18:51:55

        En gros, je suis d'accord, sauf avec la dernière chose : "faire des fgets ..." -> C pas C++. L'équivalent c'est getline.
        • Partager sur Facebook
        • Partager sur Twitter
          21 août 2007 à 22:47:11

          Mais ici, std::istream::ignore qui est à utiliser.
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
            22 août 2007 à 12:10:39

            D'accord merci a tous !
            je vais utiliser des getline pour compter le nombre de lignes.
            Merci encore et a bientot !
            • Partager sur Facebook
            • Partager sur Twitter
              22 août 2007 à 21:43:37

              std::getline va inutilement consommer des cycles à copier le contenu du fichier dans des chaines (+ les allocations)
              • Partager sur Facebook
              • Partager sur Twitter
              C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

              placement dans un fichier en c++

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown