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 :

Format en F77


Sujet :

Fortran

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Par défaut Format en F77
    Bonjour,

    J'ai un probleme assez con et je voudrais savoir si quelqu'un a une solution...
    Je viens de creer un programme qui necessite des inputs en .txt de coordonnees X/Y en colonnes.

    Le probleme, c'est que mon programme ne lit que les formats du style

    4.25866,8.95566
    48755,144552

    Donc ou X et Y sont separées par des virgules...

    Ma commande est un basique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read(19,file=nomdufichier,status='old')x,y
    Ya t'il un moyen de spécifier un format pour que mon programme lise les valeurs séparés par des espaces ? (comme si dessous)

    4.25866 8.95566
    48755 144552

    Merci d'avance !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Par défaut
    Normalement l'espace comme séparateur est le cas le plus standard à lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    OPEN(UNIT=19,NAME='nomfichier.txt',STATUS='OLD')
    READ(19,*) X,Y
    Pour traiter les deux situations : séparateur virgule et séparateur espace, il faut lire toute la ligne dans une chaine de caractères , changer les virgules en espace puis faire une lecture interne.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Par défaut
    Malheureusement non.
    J'ai vu un collegue le faire sur mac, mais Force2 sous windows Vista ne reconnait malheureusement pas la disposition
    J'ai le message d'erreur "unreadable file"

    Une autre solution?

  4. #4
    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
    Unreadable file ?

    Le problème vient à mon avis du fait que ton read n'a pas de format et que ton fichier n'est pas unformatted. D'ailleurs, il est bizarre ton read. Les clauses NAME et STATUS sont des clauses d'un OPEN, pas d'un read.

    As-tu essayé la proposition de mipicard ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 12
    Par défaut
    Yes. Et malheureusement ça marche pas.
    Oui, mon read est bizzare je me suis tromper en recopiant mon code... Sorry !
    Je corrige :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Open(19,file='nameofthefile',status='old')
    read(19,*) x,y
    Donc le meme que Mipicard !
    Desolé encore...
    Mais ça pourrai pas venir de l'encodage du fichier TXT ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Par défaut
    Peux tu lire le fichier de données avec notepad (ou un autre éditeur de texte) ? Si la réponse est Oui alors cela dépasse mes connaissances !

    Sinon voici le code qui lit le ligne dans une chaine de caractères, la modifie, puis la décode (si cela peut t'aider)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    ! lecture dans un string puis décodage
     
          REAL(8)     X,Y           ! données à lire
          INTEGER(4)  IOERR         ! error number during file opening or writing (system)
          INTEGER(4)  ERREUR        ! erreur number given by application
     
          INTEGER(4)  DAT           ! data file logical number
          INTEGER(4)  STDERR        ! error stream logical number
          CHARACTER*255  DAT_FNAME  ! data file name (input)
          CHARACTER*132  LIGNE      ! dummy string
          INTEGER(4)  NLEN          ! line length
     
          PARAMETER (DAT=19, STDERR=6)
     
          DAT_FNAME = 'nomfichier.txt'    ! Default file name
     
          OPEN(UNIT=DAT,NAME=DAT_FNAME,STATUS='OLD',IOSTAT=IOERR)
          IF (IOERR.GT.0) THEN
              WRITE(STDERR,'(A10,I3,A32,A)') CHAR(09)//'ERROR n°:',IOERR," DURING OPENING "//DAT_FNAME(1:LNBLNK(DAT_FNAME))
          ENDIF
     
          READ(DAT,'(A)',END=999) LIGNE
    ! on peut mettre un print ici pour voir la ligne lue
    ! write(stderr,*) LIGNE
     
          NLEN = LEN_TRIM(LIGNE)
          DO I=1,NLEN
            IF (LIGNE(I:I) == ',') LIGNE(I:I) = ' '  ! virgule -> espace
          ENDDO
     
    ! on peut mettre un print ici pour voir la ligne modifiée
    ! write(stderr,*) LIGNE
          READ(LIGNE,*) X,Y         ! décodage ligne
     
    ! ici un return ou goto pour ne pas passer par exception
     
    C               Exceptions
     999  ERREUR = 10
          WRITE(IMP,'(A13,I3)') CHAR(09)//'WARNING: n° ',ERREUR,
          WRITE(IMP,'(A)') CHAR(09)//'End of file during read'

Discussions similaires

  1. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00
  2. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34
  3. Format d'un exe pour DOS et pour Windows
    Par Alfhiger dans le forum Assembleur
    Réponses: 4
    Dernier message: 12/06/2002, 11h57
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

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