Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec la lecture d'un flux

fstream.read(size,location)

    6 octobre 2007 à 15:05:48

    Bonjour,

    aujourd'hui en programmant je me suis heurté à une difficulté et votre aide me serai d'une grande utilitée :

    en utilisant la méthode read de la class fstream j'ai remaqué ce celle-ci stoppait sa lecture dès la rencontre d'un "caractère nul"

    C'est-à-dire que quand je compile cette partie de code :

    1. ...
    2. using namespace std;
    3. ...
    4. int main(int argc, char *argv[])
    5. {
    6.     fstream fichier;
    7.     char *data;
    8.     int length;
    9. if (argc > 1)
    10.     {
    11.         fichier.open(argv[1],ios_base::in|ios_base::out);
    12.         if (fichier.bad())
    13.             return -1;
    14.     }
    15. /*
    16. ...
    17. recherche de la taille du fichier et allocation de la memoire en conséquence
    18. ...
    19. */
    20.     fichier.read (data,length);
    21.     fichier.close();
    22.     cout << data;
    23.     delete[] data;
    24.     return EXIT_SUCCESS;
    25. }


    le programme va afficher le contenu du fichier jusqu'a l'appariton d'un caractère nul.

    Savez vous comment résoudre mon problème.

    d'avance merci :)

    • Partager sur Facebook
    • Partager sur Twitter
      6 octobre 2007 à 16:50:38

      if(argc>1) ca veux dire argc doit etre au moin = à 2.

      il ne lit pas le premier fichier envoyé

      if(argc>=1) serait mieux

      cette condition doit contenit tout ton programme ou tu lis le fichier (jusqu'à delete[] data)
      • Partager sur Facebook
      • Partager sur Twitter
        6 octobre 2007 à 17:55:37

        Ouvres un ifstream en "binaire"
        • 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.
          6 octobre 2007 à 19:49:08

          Citation : neuneutrinos

          if(argc>1) ca veux dire argc doit etre au moin = à 2.

          il ne lit pas le premier fichier envoyé

          if(argc>=1) serait mieux

          cette condition doit contenit tout ton programme ou tu lis le fichier (jusqu'à delete[] data)



          Parce que le premier c'est toujours le chemin de l'exécutable en C et en C++ (Sous windows en tout cas)
          • Partager sur Facebook
          • Partager sur Twitter
            6 octobre 2007 à 21:23:48

            Citation : lmghs

            Ouvres un ifstream en "binaire"



            je l'ai ouvert en binaire mais j'ai toujours le meme problème.

            D'autres idées?
            • Partager sur Facebook
            • Partager sur Twitter
              6 octobre 2007 à 22:10:46

              Tu n'utiliserai pas << pur afficher ce que tu as lu des fois ?
              • 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.
                7 octobre 2007 à 9:25:57

                Citation : lmghs

                Tu n'utiliserai pas << pur afficher ce que tu as lu des fois ?


                En effet j'utilise

                1. cout << data;


                pour afficher mes données.
                le caractère nul arrèterai-t'il l'afficharge?
                • Partager sur Facebook
                • Partager sur Twitter
                  7 octobre 2007 à 12:41:35

                  Si data se convertit en "char const*", oui. La convention C de chaines 0-terminées est utilisée.
                  Avec les std::strings, j'avoue que je ne sais pas vu que cela n'a pas grand sens que d'y stocker des octets.
                  • 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.

                  Problème avec la lecture d'un flux

                  × 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