Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation des membres read() et write()

à la place de fread() et fwrite()

Sujet résolu
    4 septembre 2007 à 11:14:31

    Salut,

    J'ai un problème qui me turlupine depuis un bon bout de temps. Quand je faisais du C j'écrivais en binaire dans des fichiers avec les fonctions fread() et fwrite() mais là c'est du C++. J'ai donc cherché un peu et j'ai trouvé les membres read() et write() mais j'ai l'impression qu'il manque quelque chose...

    Je m'explique : Avec fread() il faut tout d'abord mettre en paramètre l'adresse du buffer, la taille des variables, le nombre de caractères à lire, puis le fichier à lire. Avec le membre read() il faut indiquer le buffer et la taille des variables mais où met-on le nombre de caractères à lire ? Ce n'est pas grand chose mais ça m'embête beaucoup parce que je ne sais pas comment procéder :( .

    Merci d'avance :) ,
    Nesquik69
    • Partager sur Facebook
    • Partager sur Twitter
      4 septembre 2007 à 11:17:31

      Je crois qu'on le dira jamais assez, utilise les flux !!

      Regarde par exemple le tuto de Xav57, et tu ouvres le fichier en binaire.
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
      Anonyme
        4 septembre 2007 à 11:34:13

        Salut,

        pour les fichiers binaires, c'est effectivement un peu différent.

        @Nanoc -> dans mon tuto, je n'aborde pas encore les fichiers binaires, mais d'ici 2 semaines, ce sera le cas ;)

        @Nesquik69 -> pour la fonction membre read, il y a effectivement 2 paramètres : le buffer qui est de la forme char * buffer et le nombre d'octets à lire. Il ne faut pas confondre les fichiers textes et les fichiers binaire. Avec les fichiers textes, on peut parler de caractères, mais avec les fichiers binaires, on parle d'octets.

        Après pour lire le fichier et récupérer des données, ça dépend ce qu'on veut faire et du contenu d'un fichier.
        Suivant les cas, on peut utiliser sizeof ou tellg. tellg, je le rappelle, renvoie un int qui représente une taille en octet.
        • Partager sur Facebook
        • Partager sur Twitter
          4 septembre 2007 à 11:38:37

          Apparemment je me suis planté avec le prototype de read()... donc si je veux lire 512 octets du fichier "test" je dois faire test.read(buffer, 512) ?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            4 septembre 2007 à 11:46:34

            oui, mais il faut pas oublier d'allouer la mémoire du buffer et de le supprimer à la fin

            1. char * buffer;
            2. buffer = new char [512];
            3. fichier.read(buffer, 512);
            4. // la suite et à la fin :
            5. delete[] buffer;
            • Partager sur Facebook
            • Partager sur Twitter
              4 septembre 2007 à 11:52:38

              Pas de problèmes ! Bon, je te remercie, ça marche nikel ;) !

              @+
              • Partager sur Facebook
              • Partager sur Twitter

              Utilisation des membres read() et write()

              × 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