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 :

fstream read au comportement étrange


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Par défaut fstream read au comportement étrange
    Bonjour, j'essaie de lire un fichier .jpg avec fstream et read
    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <iostream>
    #include <fstream>
     
    using namespace std;
     
    int main(int argc,char** argv)
    {
      char contenu[1000];
      fstream fichier("a.jpg", ios::in | ios::out | ios::binary);
      fichier.read(contenu,1000);
      cout << contenu<< endl;
      return 0;
    }
    Je veux qu'il me remplisse 1000 octets et au final j'en obtient que 4 j'ai essayé avec un texte renommé en .jpg et ça marche. Donc je comprend pas surtout que j'avais déjà fait un programme avec des fstream et ça marchait.
    Si quelqu'un pouvait m'aider j'en serais reconnaissant. Merci d'avance.

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Tu envoies un char * sur la sortie standard qui est interprété comme une chaîne de caractères : dès qu'un '\0' est rencontré, l'inspection de ton buffer s'arrête. Comment pourrait-il en être autrement : std::cout n'est pas informé de sa taille. La solution est de ne pas interpréter les octets et d'afficher leurs valeurs brutes.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Par défaut
    En fait j'envoie le char* avec SDLnet_TCP_Send et ensuite je fais un write et ce qui est écrit dans le fichier client contient que 4 octets comme avec cout

    edit: en fait j'ai trouvé, au moment où je converti le contenu avec sprintf il perd en taille.
    y aurait il un moyen de caser quelques int au début du char* sans sprintf ?

    Bon merci bien à toi j'ai trouvé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Forms6i] Un IF-ELSIF au comportement étrange
    Par lafouine dans le forum Forms
    Réponses: 11
    Dernier message: 13/09/2005, 15h40
  2. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 19h44
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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