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 :

Separation chaine de caracteres et donnes Fortran 77


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut Separation chaine de caracteres et donnes Fortran 77
    Bonjour a tous,

    Je souhaiterai lire une ligne d'un fichier qui contient d'abord 32 caracteres puis ensuite 400000 donnees separees par des virgules.
    La partie chaine de caractere ne m'interresse pas,ce sont les donnees que je voudrai mettre dans une variable.

    Voici le code que j'ai ecris :
    real*8 x
    character string*2000000

    read(10,'(a)')string
    string=string(32:)
    read(string,*)x
    print *,x

    Mais en sortie je n'obtiens qu'un 0, qui correspond a la premiere valeur des donnees et je n'arrive pas a lui faire afficher toutes les donnees presentes.

    Le nombre de donnees n'est egalement pas fixe (autour de 400000). Comment puis-je connaitre le nombre exact ?

    Merci pour votre aide !

    Antoine

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Par défaut
    Sauf erreur de ma pars, FORTRAN lit les espaces, virgules, tabulations et slash comme des séparateurs de chaîne de caractères. De fait, pour pouvoir lire ta ligne de fichier, il est nécessaire de définir un tableau de caractères plutôt qu'un simple caractère.

    Exemple en reprenant ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    REAL(KIND=8) :: X
    character(99),dimension(N) :: CHAINE !N doit être égal au nombre de colonnes dans le fichier
     
    read(10,*) ! On saute la première ligne
    read(10,'(a)')CHAINE ! On lit la totalité de la ligne stockée dans le tableau
     
    DO I=1,N
    READ(CHAINE(I),*)X
    PRINT*,X
    END DO
    Nota : je ne connais pas le F77, je t'ai transposé le programme en F90

    En espérant avoir pu t'aider,

    Marlan

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut
    Oula !

    Desole pour cette reponse tardive, je croyais recevoir une notification lors d'une reponse.

    Merci pour ton aide, c'est effectivement la definition de ma variable qui etait mauvaise. apres changement en tableau de reel ca marche nickel !

    Merci encore

    Antoine

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

Discussions similaires

  1. separer chaine de caractere
    Par guadock dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/04/2011, 17h12
  2. [PHP 4] Récuperer des données a partir d'une chaine de caracteres URL
    Par moonwar dans le forum Langage
    Réponses: 4
    Dernier message: 13/02/2009, 07h59
  3. ensemble de données vers une chaine de caractere.
    Par Delphieur dans le forum Oracle
    Réponses: 1
    Dernier message: 06/08/2007, 17h34
  4. Réponses: 2
    Dernier message: 25/04/2007, 10h41
  5. Réponses: 2
    Dernier message: 19/12/2005, 21h08

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