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 :

Problème de lecture partielle d'un fichier


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut Problème de lecture partielle d'un fichier
    Salut,

    j´ai un fichier *.dat avec text et numéros. Voilà un example:

    1
    2
    3
    ici
    2
    0


    Le problème est que je veux seulement entrer/utiliser le 2 et le 0 dans F90, qui appareitent après le mot ici. Je ne sais pas, quelle est la procedure correcte. Un do while (a.neq.='ici') peut etre combinée avec la saltation à la prochain ligne pour lire le 2 et le 0? Un peu d´aide si vous plait:-(

    Excusez moi pour le mauvais franÇais.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 79
    Par défaut
    Bonjour,

    et bien ce que tu proposes est la bonne idée.
    Tu dois faire une lecture sur ton fichier, réaliser un test sur les trois premiers caractères. et en fonction du résultat (si ligne=="ICI") changer le format de lecture.
    Ce qui peut s'écrire ainsi.

    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
     
    program Lecture
    !déclaration des variables
    implicit none
     
    character(len=10)::ligne
    integer::io,iligne=1
    !j'ai considéré que tu avais au moins 10 valeurs à lire après "ici"
    integer::v(10)=0
     
    !ouverture fichier
    open(10,File="data")
     
    Boucle1:do
       read(10,*,iostat=io)ligne
       if(io/=0)exit
    !test présence ici
       if(ligne(1:3)=="ici")then
          write(*,*)"début stockage"
    !on entre dans la boucle de lecture des variables
          Boucle2 :do   
             read(10,*,iostat=io)v(iligne)
             if(io/=0)exit
    !on incrémente le compteur de ligne
             iligne=iligne+1
          end do Boucle2
       end if
    end do Boucle1
    !test si on obtient bien ce qu'on voulait
    write(*,*)v(1:2)
     
    end program Lecture

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par yogitetradim Voir le message
    Ce qui peut s'écrire ainsi.
    J'aurais plutot utilise un logical qui indique qu'on est dans la section ou les variables doivent etre lues, plutot qu'une double boucle.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut Une autre possibilite
    EUREKA! Je pense que C'est une solution très élégante yogitetradim J'ai trouvé une autre plus "quick&dirty fix" si on connaît la ligne ou le data commence après ici, n1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                 test=' '						
    	DO WHILE(test.ne.'ici')	  
    	READ(UNIT=70,*) test
    	!print*,test
    	END DO
    	DO k=1,n
    		READ(70,*) Data(n1+k)							!n1: jump to specified line in file
    		Datax(k) = Data(n1+k)
    	END DO
    	CLOSE(70)
    Je vous remercie :-) À tout a l'heure

Discussions similaires

  1. Problème de lecture/écriture d'un fichier chiffré
    Par Stud10 dans le forum Général Java
    Réponses: 25
    Dernier message: 19/03/2013, 21h30
  2. problème de lecture/décodage d'un fichier texte
    Par _vince_ dans le forum Général Python
    Réponses: 5
    Dernier message: 04/01/2012, 09h43
  3. Problème de lecture/ecriture dans un fichier txt
    Par fraid49 dans le forum Général Python
    Réponses: 6
    Dernier message: 20/11/2008, 11h32
  4. Problème de lecture de fin de fichier (eof(fichier))
    Par jailbomba dans le forum Pascal
    Réponses: 2
    Dernier message: 21/02/2007, 16h50
  5. [VB.NET]Problème de lecture et écriture sur fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 25
    Dernier message: 23/05/2006, 15h30

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