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

Fortran Discussion :

Ouverture fichier binaire


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 45
    Par défaut Ouverture fichier binaire
    Bonjour,

    Afin d'ouvrir un fichier binaire j'emploie les instructions suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    open(11,file=fni)
    i=0
    Do
        read(11,*,end=1000) 
        i = i + 1
    Enddo
    1000  write(*,*)"la lecture a atteint la fin du fichier"
          write(*,*)"le nombre de ligne est : ",i
    ce à quoi on me réponds:
    la lecture a atteint la fin du fichier
    le nombre de ligne est : 0
    forrtl: severe (24): end-of-file during read, unit 11
    Vous me direz peut être d'employer les options suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open(11,file=fni,form="unformatted")
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open(11,file=fni,form='binary')
    Malheureusement elles donnent ceci:
    forrtl: severe (257): formatted I/O to unit open for unformatted transfers, unit 11
    Précision utile, le fichier binaire a été écrit à partir d'un programme C++
    Si vous avez d'autres suggestions à faire je suis tout ouïe

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Si le fichier est bien binaire et qu'il a été créé par un programme C++, ce serait très surprenant qu'il soit unformatted.

    Tu dois donc faire le open avec "binary" (ou "stream" ou ???). Ce mode n'est pas standard avant Fortran 2003 et le nom varie d'un compilateur à l'autre.

    Au read, tu dois enlever la référence au format. "*" dans ton cas. Tu dois donc utiliser read(11,end=1000). De plus, comme un fichier binaire n'a pas de ligne, tu devras revoir ton programme... Veux-tu compter le nombre de bytes, de real, ... ? Je ne suis pas expert en fichier binaire, mais conceptuellement, une lecture "dans le vide" ne me fait pas de sens. Tu devrais ajouter une variable (au moins une) u red pour indiquer ce que tu veux lire, de combien long tu veux avancer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 45
    Par défaut
    En fait je désire pouvoir lire tous les bytes du fichier un à un, cela afin de passer du binaire à au décimal.
    Mon premier post était simplifié pour le rendre plus illustratif.
    Maintenant ça passe, mais j'ai ça:

    input statement requires too much data

Discussions similaires

  1. Probleme lors de l'ouverture d'un fichier binaire
    Par kevinl dans le forum Fortran
    Réponses: 8
    Dernier message: 08/03/2012, 08h36
  2. Ouverture d'un fichier binaire
    Par GriffinK dans le forum C#
    Réponses: 4
    Dernier message: 12/06/2009, 12h04
  3. Ouverture fichier binaire .PIC
    Par jyjeanphi dans le forum MATLAB
    Réponses: 2
    Dernier message: 23/03/2009, 06h52
  4. Réponses: 10
    Dernier message: 13/11/2008, 18h12
  5. Réponses: 20
    Dernier message: 07/08/2007, 14h59

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