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 :

Ecrire des donnees dans un fichier binaire pour interfacage avec fortran


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut Ecrire des donnees dans un fichier binaire pour interfacage avec fortran
    Bonjour,
    je cherche a ecrire des donnees dans un fichier binaire qui doit etre lu ensuite par un programme fortran. J'ai essayé le programme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <iostream>
    #include <fstream>
    using namespace std;
     
    main() {
     
     ofstream OutFile("test.b", std::ios_base::binary);
     int var=3;
     
     OutFile.write(reinterpret_cast<const char*>(&var),sizeof(int));
     
     OutFile.close();
     
    }
    J'obtiens en l'exécutant le fichier test.b que j'essaye de lire en fortran comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    program lire
     
    integer lunite
    integer var
     
    open(lunite,file='test.b',form='unformatted')
    read(lunite) var
    print*,var
     
    end
    ce qui me renvoit le message d'erreur suivant :
    Fortran runtime error: Unformatted file structure has been corrupted

    Existe-t-il des méthodes de fstream pour écrire un fichier binaire à un format lisible par fortran ?
    Merci

  2. #2
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Le code C++ présenté fait de la sérialisation binaire.
    Es-tu sûr que la fonction "open" côté Fortran s'attende à du format binaire et pas texte ?

    En effet, si c'est le cas, "open" va chercher à parser du texte représentant des nombres et lever une erreur si elle trouve des données non numériques, or la sérialisation binaire ne donne pas forcément des caractères numériques d'où l'erreur.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    merci de ta réponse,
    en fait c'est l'option 'unformatted' qui précise que le fichier est binaire, mais j'ai lu que la représentation des données binaires dans un fichier était différente en fortran et en C++ ;
    si je fais une fonction écrire en binaire en fortran, et que j'écris la même valeur, j'obtiens un fichier différent de celui que j'obtiens avec le C (et de taille différente, 12octets pour le fichier créé par fortran, contre 4 pour celui créé par C (taille d'un entier)).
    Je me demande s'il existe des fonctions en C qui permettent d'écrire au format binaire de fortran...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    J'ai trouvé une solution sur le lien http://www.idris.fr/su/Vectoriel/bro...rtran_C++.html
    J'appelle une subroutine fortran d'ecriture du fichier binaire depuis mon programme C, en sortie duquel j'ai donc un fichier binaire lisible par un programme fortran.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 08/03/2007, 16h54
  2. [SQLLite] Lecture des données dans un fichier .db
    Par PedroBD dans le forum PHP & Base de données
    Réponses: 31
    Dernier message: 13/11/2006, 17h12
  3. Réponses: 1
    Dernier message: 05/09/2006, 17h56
  4. Récuperation des donnees dans un fichier .csv
    Par HMorvan dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/09/2006, 22h27
  5. Mettre des donnees dans un fichier Excel
    Par Mouawad dans le forum C++Builder
    Réponses: 6
    Dernier message: 07/10/2004, 14h55

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