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 :

Lecture des Fichiers/ Accès aux autres colonnes


Sujet :

Fortran

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Lecture des Fichiers/ Accès aux autres colonnes
    Salut,
    Je suis débutant en Fortran (mais je cumule des connaissances en C et pHp) mon souci réside dans la lecture des fichiers avec la fonction READ.
    J'aimerais savoir s'il y'a une méthode pour lire le contenu d'une ligne et non pas d'une colonne comme cela se fait dans les exemples que je trouve sur internet

    c'est à dire:

    j'ai des données comme suit :

    [monfichier.txt]

    45 26 87 69 63
    78 52 12 23 47

    [fin monfichier.txt]

    j'aimerais accéder à un nombre quelconque sur la ligne, sans devoir utiliser des variables bidons. ex: 69, 12 ou 87
    J'ai l'impression qu'en FORTRAN on ne peut lire qu'en colonne, rassurez moi que c'est pas vrai!!!

    Merci d'avance

  2. #2
    Membre averti
    Homme Profil pro
    [SciComp]
    Inscrit en
    Août 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : [SciComp]

    Informations forums :
    Inscription : Août 2013
    Messages : 134
    Points : 323
    Points
    323
    Par défaut
    Je ne sais pas si ça serait satisfaisant dans le cas présent, mais une possibilité serait de regarder ce que peut faire l'ouverture de fichier par accès direct. Cela permet [modulo un format vraiment constant dans tout le fichier] d'accèder au n-ième enregistrement d'un fichier.
    Les mots clefs sont les options
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    access='direct'     (ouverture)
    recl=recordlength   (ouverture)        ici un truc du genre : open(11,file="data.dat",form="formatted",status="old",access="direct",recl=3)
    rec=recordnumber    (lecture/écriture) ici un truc du genre : read(11,'(i2,1x)',rec=i) a
    Après, dans ce cas d'un fichier formaté, ligne/colonne n'ont plus vraiment de sens, je pense que la longueur recl = nombre de caractères par enregistrement est standard mais je ne sais pas comment serait interprété un "newline" par exemple (chez moi apparemment it's skipped, mais est-ce standard ? il faut regarder). Si oui, tu peux t'en sortir en calculant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ith_record_kth_line = n_records_per_lines * kth_lines + ith_record
    C'est une idée, rien de plus, il faut voir si ça peut coller, se renseigner sur le caractère standard ou non pour un fichier formaté, et essayer.

    EDIT 19h50 :
    Re-bonjour,
    Bon, alors j'ai un peu déliré avec le newline. C'est considéré comme un caractère comme un autre, au même titre qu'un "TAB", qu'un espace ou encore un "z". Il n'est donc pas skippé et dans le cas d'un descripteur de champs "i2,1x", il faut soit l'espace, soit le newline, soit n'importe quoi, mais un et un seul caractère.

    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
    program test
      implicit none
      integer :: a,i
     
      ! Pour lire toujours le même champs, ligne par ligne, on peut utiliser e descripteur "x" qui permet de sauter des caractères
      open(11,file="monfichier.txt",form="formatted",status="old",access="sequential")
        read(11,'(9x,i3)') a
        print *,a
        read(11,'(9x,i3)') a
        print *,a
      close(11)
     
      ! Pour lire/écrire sur l'enregistrement "i", qques exemples
      open(11,file="monfichier.txt",form="formatted",status="old",access="direct",recl=3)
      do i=10,1,-2
        read(11,'(i2,1x)',rec=i) a
        print *,i,a
      enddo
      do i=1,10,2
        read(11,'(i2,1x)',rec=i) a
        print *,i,a
      enddo
      do i=1,10
        read(11,'(i2,1x)',rec=i) a
        write(11,'(i2,1x)',rec=i) a
      enddo
      close(11)
    end program test
    Bref, à essayer sur "monfichier.txt", sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    45 26 87 69 63
    78 52 12 23 47
    La seconde partie en accès direct marchera indifféremment sous un fichier de la forme précédente ou sous cette forme (où les grands espace sont des tabulations)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    45      26a87z69e63r78
    52      12      23
    47
    Fortran sait lire aussi des choses plus compliquées, cf. les namelists, mais on s'éloigne de la question initiale.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour le tuyau ...je mettrais cela a profit

Discussions similaires

  1. Lecture des fichiers RAW erf ou autre
    Par colorid dans le forum Langage
    Réponses: 5
    Dernier message: 25/04/2012, 17h46
  2. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  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. Lecture des fichiers INI
    Par jamfr73 dans le forum Linux
    Réponses: 2
    Dernier message: 13/04/2006, 01h03
  5. Lecture des fichiers INDEX.DAT ?
    Par rpoulin dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2005, 07h46

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