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 de fichier ligne par ligne


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Lecture de fichier ligne par ligne
    Bonjour
    J'ai plusieurs fichiers dont j'aimerais copier le contenu dans un seul même fichier !
    Donc ce que j'ai cherché à faire naturellement c'est de lire fichier par fichier et de copier le contenu ainsi de suite dans le même fichier.
    Je cherchais donc à savoir comment on fait pour copier une ligne entière sans se casser la tête à déclarer une partie en tant que chaîne de caractères, 2eme partie real, ainsi de suite !
    Enfin, quelque chose qui permet de copier la ligne entière et ensuite de l'écrire telle quelle dans un autre fichier.

    Mes fichiers ressemblent à cela :
    CC-00001.dat 34.575676 29.811298 20.993086 1.647003 1.420053 1.000000
    CC-00002.dat 33.532253 22.472975 22.079941 1.518675 1.017800 1.000000
    CC-00003.dat 28.145411 22.203480 20.956093 1.343066 1.059524 1.000000
    CC-00004.dat 30.566776 27.905933 22.762527 1.342855 1.225959 1.000000
    D'ailleurs j'ai essayé de copie les lignes en déclarant 1er character 2eme 3 eme .. real mais en fait quand je fais ça, il ne copie que la première ligne et il s'arrête. Enfin ma condition d'arrêt c'est read(unit=, *, iostat =ios)
    if (ios.ne.0)exit
    mais je remarque que ios = 29 lorsqu'il lit la deuxième ligne et donc il sort tout de suite de la boucle ! Je ne comprends pas pourquoi !
    S'il ya quelqu'un pour m'aider SVP !
    Merci beaucoup.

  2. #2
    Membre éprouvé
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Points : 982
    Points
    982
    Par défaut
    Une manière simple est la suivante

    Tu déclare une variable ligne de type character

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    character(len=100)::ligne
    Ensuite tu met dans ligne chaque ligne de ton fichier que tu recopie dans ton nouveau fichier.

    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
     
    ....
    open(10,file="fichier1")
    open(11,file="fichier2")
    ....
     
    !recopiage
    ligne=""
    Do
      read(10,"(a)",end=100,err=200)ligne
      write(11,"(a)")ligne
    Enddo
     
    ....
     
    100 fin du fichier
    200 erreur de lecture
    Le format "(a)" est important pour qu'il lise bien toute la ligne. Ensuite il faut que tu mettes la bonne valeur dans la déclaration de len pour que la ligne soit suffisament longue.

    Si tu veux lire quelque chose dans la variable ligne pour faire une condition d'arret de la boucle de copiage ou autre tu fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read(ligne(23:46),*)variable
    Tu met dans variable le contenue de ligne entre le caractère 23 et 46 inclu.

    Autre méthode :
    Si tu es sous linux tu peux utiliser la commande "cat"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call system("cat fichier2 >> fichier1")
    Là tu écrit dans fichier1 à la suite de ce qu'il contient déjà, tout le contenue de fichier2 !
    ATTENTION il faut les deux >. Si tu en met 1 ça écrasera fichier1.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    merci beaucoup, je ne connaissais pas la commande linux, mais elle est vachement pratique et rapide surtout! merci beaucoup.

    d'ailleurs je me demandais comment pourrait on l'utiliser pour concatener plusieurs fichiers : j'ai essaye la commande " cat fichier1 >> fichier2 >>fichier3 "
    ca ne marche pas.

    Peut etre faut il ecrire un petit programme avec une boucle ou on change le nom du fichier mais la je ne sais pas comment faire en utilisant call system !

    mes fichiers sont anm-01.dat anm-02.dat ,...
    merci pour votre aide

  4. #4
    Membre éprouvé
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Points : 982
    Points
    982
    Par défaut
    Non, tu n'as pas besoin d'une boucle.

    Tu fais simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cat fichier1 fichier2 fichier3 fichier4 .... >> un_autre_fichier
    et tu mets à la suite de ton fichier un_autre_fichier, le fichier1 puis le 2 puis le 3

    Fais quelques tests avec des fichiers à toi

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    merci beaucoup! ca marche =)

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/07/2014, 18h08
  2. lire fichier .txt (NOTEPAD) ligne par ligne
    Par skambram dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/06/2009, 18h41
  3. lire un fichier de string ligne par ligne
    Par bilzzbenzbilz dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 11/02/2009, 10h44
  4. [lecture d'un fichier] ligne par ligne
    Par pitit777 dans le forum C++
    Réponses: 3
    Dernier message: 26/11/2005, 11h22
  5. [debutant]lecture fichier ligne par ligne
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 19h02

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