1. #1
    Membre expert
    Avatar de fred1599
    Homme Profil pro
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    2 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 2 240
    Points : 3 618
    Points
    3 618

    Par défaut Sauts de ligne lors de la lecture de fichier

    Bonjour,

    J'en suis à mon deuxième jour de Fortran, et je cherche à lire ligne par ligne un fichier. Ça semble faire le boulot, mais je n'arrive pas à comprendre pourquoi j'ai des sauts de lignes lors de la lecture des lignes du fichier ouvert.

    Au lieu d'avoir comme dans mon fichier

    J'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    a
     
     
    a
     
     
    a
    Voici mon code,

    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
    PROGRAM f
     
        IMPLICIT NONE
        INTEGER :: i=0, ierr
        CHARACTER(len=500) :: ligne
     
        open(11, file="serv.py", action="read", iostat=ierr)
        DO
            read(11, ("(a)"), iostat=ierr) ligne
            IF (ierr == 0) THEN
                IF (ligne /= "") THEN
                    print*, ligne
                END IF
            ELSE
                CLOSE(11)
                EXIT
            END IF
        END DO
     
     
     
    END PROGRAM f
    Merci par avance,

    PS : Si vous avez des astuces sur ce langage, c'est avec plaisir que je prends, encore merci...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  2. #2
    Membre expert
    Avatar de fred1599
    Homme Profil pro
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    2 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 2 240
    Points : 3 618
    Points
    3 618

    Par défaut

    Bon eh bien je m'auto répond, la solution est la fonction TRIM,

    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
    PROGRAM f
     
        IMPLICIT NONE
        INTEGER :: i=0, ierr
        CHARACTER(len=500) :: ligne
     
        open(11, file="serv.py", action="read", iostat=ierr)
        DO
            read(11, ("(a)"), iostat=ierr) ligne
            IF (ierr == 0) THEN
                IF (ligne /= "") THEN
                    print*, TRIM(ligne)
                END IF
            ELSE
                CLOSE(11)
                EXIT
            END IF
        END DO
     
     
     
    END PROGRAM f
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre expert
    Homme Profil pro
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    2 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : juin 2007
    Messages : 2 009
    Points : 3 900
    Points
    3 900

    Par défaut

    Bonjour.

    Et donc quelle serait l'origine du problème si la fonction TRIM est arrivée à le résoudre ?

  4. #4
    Membre expert
    Avatar de fred1599
    Homme Profil pro
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    2 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 2 240
    Points : 3 618
    Points
    3 618

    Par défaut

    Et donc quelle serait l'origine du problème si la fonction TRIM est arrivée à le résoudre ?
    Les caractères vides à supprimer
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre expert
    Homme Profil pro
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    2 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : juin 2007
    Messages : 2 009
    Points : 3 900
    Points
    3 900

    Par défaut

    Bonjour.

    D'accord, donc ce ne sont pas des sauts de lignes mais la suite vide des lignes imprimées ou affichées.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    août 2006
    Messages
    941
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2006
    Messages : 941
    Points : 1 342
    Points
    1 342

    Par défaut

    Précision : Ce ne sont pas des vides, mais des espaces. En Fortran, les chaînes sont automatiquement complétées par des espaces lors de l'affectation avec une chaîne plus courte.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    character (10) :: S
    S = 'ABC' ! S contient 'ABC       '
    S = ''! S contient '          ', il n'est pas possible de "vider" S

  7. #7
    Membre expert
    Homme Profil pro
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    2 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : juin 2007
    Messages : 2 009
    Points : 3 900
    Points
    3 900

    Par défaut

    Citation Envoyé par Sylvain Bergeron Voir le message
    Précision : Ce ne sont pas des vides, mais des espaces. En Fortran, les chaînes sont automatiquement complétées par des espaces lors de l'affectation avec une chaîne plus courte.
    Bien entendu, au temps pour moi pour cet abus de langage.

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

Discussions similaires

  1. [PHP 5.0] Saut de ligne lors d'un include
    Par Kuchiki Byakuya dans le forum Fonctions
    Réponses: 2
    Dernier message: 26/09/2012, 20h21
  2. [XL-2007] Saut de ligne lors de lecture fichier .txt
    Par Loupire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/01/2010, 10h02
  3. [notepad++] Perte des sauts de ligne lors des copier/coller
    Par L'aigle de Carthage dans le forum Windows Vista
    Réponses: 4
    Dernier message: 26/12/2009, 20h56
  4. Réponses: 0
    Dernier message: 28/01/2008, 12h20
  5. Problème de sauts de lignes lors d'un export Excel
    Par guidav dans le forum Syntaxe
    Réponses: 1
    Dernier message: 14/06/2006, 15h58

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