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

Langage C++ Discussion :

Problème extrêmement bizarre de lecture de fichier (3C6B1AE6 impossible à lire)


Sujet :

Langage C++

  1. #1
    Membre habitué
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Points : 176
    Points
    176
    Par défaut Problème extrêmement bizarre de lecture de fichier (3C6B1AE6 impossible à lire)
    Bonjour.

    Je cherche à lire un fichier binaire en C++. J'ai réussi à isoler un problème sur un autre fichier et j'expose donc ici un "cas test".

    Il s'agit de lire un tout petit fichier "test" contenant le code hexadécimal suivant (le fichier de 16 octets est disponible ici : http://www.2shared.com/file/hd68dqSa/test.html )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    3c960d54
    bcd6b9e6
    3c6b1ae6
    3bed7ca4
    Normalement, cela encode les float suivants :
    1.8316902E-02
    -2.6211690E-02
    1.4349675E-02
    7.2475243E-03
    Pour la lecture j'utilise quelque chose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    float test;
    fileStream.open(fileName.c_str(),std::ios::in);
    fileStream.read((char*)&test, sizeof(test));
    std::cout<<test<<std::endl;
    Eh bien le gros problème c'est que quoi que je fasse, le 3ème float "3c6b1ae6" n'arrive pas à passer. Je ne sais pas à quoi c'est dû, ça doit être très sioux. De plus, la lecture du float suivant ne passe pas (mais si j'ouvre le fichier et que je fais un seek au 4ème float, il n'y a pas de problème). Le problème est donc vraiment sur cette valeur "3c6b1ae6".

    Si vous avez une idée de tests à faire et du pourquoi du comment du problème cela m'intéresse parce que là j'avoue que je ne comprends pas du tout .

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Points : 176
    Points
    176
    Par défaut
    C'est bon je viens de trouver (après avoir galéré 3 heures dessus). Je ne savais pas que l'option std::ios::binary existait. Il faut donc faire à l'ouverture du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fileStream.open(fileName.c_str(),std::ios::in|std::ios::binary);
    Et là ça fonctionne correctement .

    Si toutefois quelqu'un à l'explication de la raison du plantage cela m'intéresse.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Il y a un caractère de contrôle dans le troisième nombre : 1A, qui correspond au code "substitute". C'est probablement ça.

    However, on MS-DOS systems with files opened in text mode, "end of text" or "end of file" is marked by this Ctrl-Z character, instead of the Ctrl-C or Ctrl-D, which are common on other operating systems.
    il est possible que ce soit compris comme la fin du flux, ce qui expliquerait de fait que le quatrième nombre ne s'affiche pas non plus.

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

Discussions similaires

  1. [Débutant] Problèmes lors de la lecture de fichiers
    Par flo-1987 dans le forum WinRT
    Réponses: 2
    Dernier message: 15/02/2013, 16h00
  2. [WD14] Lecture de Fichier xls impossible
    Par bruce207 dans le forum WinDev
    Réponses: 17
    Dernier message: 07/07/2011, 13h52
  3. [POI] Problème de lecture des fichiers Word
    Par Dari dans le forum Documents
    Réponses: 9
    Dernier message: 05/07/2007, 14h08
  4. Problème lors de la lecture d'un fichier avec Input...
    Par Kronoob dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 18/11/2005, 18h55
  5. Problème de lecture de fichier Oracle 9.2
    Par fortlow dans le forum Oracle
    Réponses: 4
    Dernier message: 14/11/2005, 16h48

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